教程取自于AWS数据化培训之AWS Cloud Practitioner Essentials课程,平台是AWS SkillBuilder。
模块 1:Amazon Web Services 简介
云计算
云计算在深入了解 AWS 的各个部分之前,让我们先缩小视野,对云进行一个合理的定义。云计算就是通过互联网按需提供 IT 资源并采用按需付费定价模式。下面,我们将进行详细说明。按需提供表示的是 AWS 会在您需要时为您提供所需的资源。您不需要提前告诉我们您将需要它们。突然,您发现自己需要 300 台虚拟服务器。您只需点击几下并启动它们即可。或者,您需要 2000TB 的存储空间。您不必事先告诉我们,当您需要时,直接开始使用所需的存储空间即可。如果不再需要它们了,操作也一样快速,您可以退回它们并立即停止付费。
云计算部署模式
选择云策略时,企业必须考虑所需的云应用程序组件、首选资源管理工具以及传统 IT 基础设施的要求等因素。三种云计算部署模式分别是云端部署、本地部署和混合部署。
云端部署
- 在云中运行应用程序的所有组件。
- 将现有应用程序迁移到云。
- 在云中设计和构建新的应用程序。
在云端部署模式中,您可以将现有应用程序迁移到云,也可以在云中设计和构建新的应用程序。您可以在需要 IT 员工管理的低级别基础设施上构建这些应用程序。或者,您可以使用能够减少核心基础设施的管理、架构设计和扩展需求的更高级别的服务来构建应用程序。
本地部署
- 利用虚拟化工具和资源管理工具部署资源。
- 利用应用程序管理和虚拟化技术提高资源利用率。
本地部署也称为私有云部署。在这种模式中,资源通过虚拟化工具和资源管理工具部署在本地
混合部署
- 将基于云的资源与本地基础设施连接。
- 将基于云的资源与传统 IT 应用程序集成。
在混合部署中,基于云的资源与本地基础设施相连接。您可能需要在多种情况下采用这种模式。例如,您的传统应用程序在本地可以得到更好的维护,或者政府法规要求您的企业在本地保留某些记录。
云计算的优势
将前期费用变成可变支出
前期费用是指您在使用数据中心、物理服务器和其他资源之前需要为其投入的费用。可变支出意味着您只需为消耗的计算资源付费,而不需要在知道自己会如何使用数据中心和服务器之前进行大量投资。
采用具有可变支出优势的云计算方法,企业可以实施创新的解决方案,同时节省成本。
无需在数据中心运行和维护方面投入资金
数据中心内的计算往往需要您花费更多的资金和时间来管理基础设施和服务器。
而云计算的一项优势在于,您可以减少对这些任务的关注,将精力更多地放在应用程序和客户上。
无需猜测容量
使用云计算,您无需在部署应用程序之前预测所需的基础设施容量。
例如,您可以在需要时启动 Amazon EC2 实例,并且只需为使用的计算时间付费。您可以只使用所需容量,无需为未使用的资源付费,也不会受到容量限制。您还可以根据需要进行缩减或扩展。
实现规模经济效益
使用云计算,您可以实现比自行构建更低的可变成本。
云能够汇集成千上万的客户,因此像 AWS 这样的提供商可以实现更高的规模经济效益。这种规模经济效益又转化成更低廉的按实际使用量付费价格。
提高速度和敏捷性
云计算的灵活性让您可以更轻松地开发和部署应用程序。
这种灵活性让您有更多的时间进行试验和创新。在数据中心进行计算时,可能需要几周的时间才能获得您需要的新资源。相比之下,云计算可以让您在几分钟内访问新资源。
几分钟内实现全球化部署
AWS 云业务遍布全球,因此您可以快速为世界各地的客户部署应用程序,同时实现低延迟。这意味着即使您和客户处在世界上的不同位置,客户仍然能够以最低的延迟来访问您的应用程序。
本课程稍后将会详细探讨 AWS 全球基础设施。您将会了解一些可以将内容分发给全球客户的服务。
模块 2:在云中运算
Amazon EC2简介
Amazon EC2简介EC2 在由 AWS 使用虚拟化技术托管的物理主机上运行。当您启动 EC2 实例时,您不必占用整个主机。相反,您与多个其他实例共享主机,这也称为虚拟机。在主机上运行的一个管理程序负责在虚拟机之间共享底层物理资源。这种共享底层硬件的概念称为多租户。管理程序负责协调这种多租户并且该程序由 AWS 管理。管理程序负责隔离各个共享主机资源的虚拟机。这意味着 EC2 实例是安全的。尽管它们可能共享资源,但一个 EC2 实例并不知道该主机上的任何其他 EC2 实例。它们是安全的,并且彼此分开。
Amazon Elastic Compute Cloud (Amazon EC2)
Amazon Elastic Compute Cloud (Amazon EC2) 可以通过 Amazon EC2 实例在云中提供安全并且可以调整大小的计算容量。
假设您负责处理企业资源的架构,需要为新网站提供支持。使用传统的本地资源,您必须完成以下工作:
- 预先投资购买硬件。
- 等待服务器交付。
- 在物理数据中心安装服务器。
- 进行所有必要的配置。
相比之下,通过 Amazon EC2 实例,您可以使用虚拟服务器在 AWS 云中运行应用程序。
- 您可以在几分钟内预置和启动 Amazon EC2 实例。
- 工作负载运行完成后,您可以停止使用实例。
- 您只需为实例运行时使用的计算时间付费,而不必为实例停止或终止时的时间付费。
- 您只要为需要或想要的服务器容量付费,可以节省成本。
Amazon EC2 的工作原理
Amazon EC2 的工作原理Amazon EC2 实例类型
Amazon EC2 实例类型扩展 Amazon EC2
可扩展性
可扩展性是指仅从您需要的资源开始,并且设计架构以便自动扩展和缩减,从而响应不断变化的需求。因此,您只需为实际使用的资源付费。您不必担心缺乏满足客户需求的计算容量。
如果想要自动执行扩展流程,您会使用哪项 AWS 服务?为 Amazon EC2 实例提供这一功能的 AWS 服务是 Amazon EC2 Auto Scaling。
Amazon EC2 Auto Scaling
利用 Amazon EC2 Auto Scaling,您能够自动添加或删除 Amazon EC2 实例,以响应不断变化的应用程序需求。根据需要自动缩减和扩展实例,您能够保持更好的应用程序可用性。
变化的程序需求
在 Amazon EC2 Auto Scaling 中,您可以使用两种方法:动态扩展和预测式扩展。
- 动态扩展可以响应不断变化的需求。
- 预测式扩展可以根据预测的需求自动安排合适数量的 Amazon EC2 实例。
示例:Amazon EC2 Auto Scaling
云中的计算能力是一种编程资源,因此您可以采取更灵活的方法来解决扩展问题。通过向应用程序添加 Amazon EC2 Auto Scaling 功能,您可以在需要时向应用程序添加新实例,并在不再需要这些实例时终止它们。
假设您准备在 Amazon EC2 实例上启动一个应用程序。在配置 Auto Scaling 组的大小时,您可以将 Amazon EC2 实例的最小数量设置为一个。这意味着在任何时候都必须至少运行一个 Amazon EC2 实例。
创建 Auto Scaling 组
创建 Auto Scaling 组时,您可以设置最小数量的 Amazon EC2 实例。最小容量是指创建 Auto Scaling 组后立即启动的 Amazon EC2 实例的数量。在本示例中,Auto Scaling 组的最小容量为一个 Amazon EC2 实例。
接下来,即使您的应用程序最少只需要一个 Amazon EC2 实例就能够运行,您也可以将所需容量设置为两个 Amazon EC2 实例。
您可以在 Auto Scaling 组中设置的第三项配置是最大容量。例如,您可以将 Auto Scaling 组配置为根据需求的增加而扩展,但最多只能扩展到四个 Amazon EC2 实例。
利用 Elastic Load Balancing 引导流量
利用 Elastic Load Balancing 引导流量当您的多个 EC2 实例都运行同一个程序,来达到相同目的时,一个请求进来,这个请求如何知道要前往哪个 EC2 实例?您怎样才能确保工作负载均匀地分布在各个 EC2 实例之间,而不是只有一个实例提供支持,其他实例闲置在旁?您需要一种方法,将请求路由到实例,来处理这个请求。您需要解决的这个问题的方法称为负载均衡。
负载均衡器是一个应用程序,它接收请求并将请求路由到实例来进行处理。目前,有很多现成的负载均衡器,它们可以在 AWS 上很好地工作。如果您正在使用一款自己喜欢的负载均衡器,它能够完全满足您的需求,那么您可以继续使用它。在这种情况下,您的运营团队将负责安装、管理、更新、扩展、处理故障转移和可用性。这是可行的。但您真正需要的可能只是在一个高性能、具有成本效益和高可用性且可以自动扩展的系统中适当地分配流量,您只需要设置一下就什么都不用管了。
下面来看看 Elastic Load Balancing。Elastic Load Balancing 简称 ELB,它是我们在这个课程中要讨论的第一个主要的托管服务。它旨在解决负载均衡方面的无差别繁重工作。为了说明这一点,我需要缩小屏幕。首先,Elastic Load Balancing 是一个区域性结构,我们将在后面的视频中详细说明它的含义。但它对于您的主要价值在于,它在区域级别,而不是在单独的 EC2 实例上运行,因此这项服务自动具有高可用性,您无需承担任何额外的工作。
Elastic Load Balancing
Elastic Load Balancing 这项 AWS 服务可以在 Amazon EC2 实例等多个资源之间自动分配传入的应用程序流量。
负载均衡器充当 Auto Scaling 组的所有传入 Web 流量的单一接触点。这意味着当您针对传入的流量添加或删除 Amazon EC2 实例时,这些请求会首先路由到负载均衡器。然后,这些请求会分布到多个资源上,由它们进行处理。例如,如果您有多个 Amazon EC2 实例,则 Elastic Load Balancing 会在多个实例之上分配工作负载,这样就不会出现单个实例承担大量工作负载的情况。
虽然 Elastic Load Balancing 和 Amazon EC2 Auto Scaling 是独立的服务,但它们可以协同工作,确保在 Amazon EC2 中运行的应用程序可以提供高性能和高可用性。
示例:Elastic Load Balancing
低需求期低需求期
这个示例可以说明 Elastic Load Balancing 的工作原理。假设有几位顾客来到一家咖啡店,准备点咖啡。
如果只有几个收银台开放,那么这就符合需要服务的顾客的需求。咖啡店不太可能在没有顾客时开放收银台。在本示例中,您可以将收银台看作 Amazon EC2 实例。
高需求期
高需求期
一天中,随着顾客人数的增加,咖啡店会开放更多的收银台接待顾客。示意图中的 Auto Scaling 组体现了这一点。
此外,还有一位店员负责引导客户前往最合适的收银台,这样就可以在开放的收银台之间均匀地分配请求数量。您可以将这位店员看作一个负载均衡器。
消息收发和队列
消息收发和队列整体式应用程序和微服务
应用程序由多个组件构成。这些组件通过相互通信来传输数据、满足请求和保持应用程序运行。
整体式应用程序
假设您的应用程序具有紧密耦合的组件。这些组件可能包括数据库、服务器、用户界面和业务逻辑等。这种类型的架构可以视为一种整体式应用程序架构。
在这种应用程序架构中,如果单个组件发生故障,其他组件也会发生故障,甚至整个应用程序都会发生故障。
为了在单个组件发生故障时保持应用程序的可用性,您可以通过微服务方法来设计应用程序。
在微服务方法中,应用程序的组件是松散耦合。在这种情况下,如果单个组件发生故障,其他组件仍然可以继续工作,因为它们还会相互通信。松散耦合可以防止整个应用程序发生故障。
微服务
在 AWS 上设计应用程序时,您可以采用微服务方法,用各种服务和组件来实现不同的功能。有两种服务可以辅助应用程序的集成:Amazon Simple Notification Service (Amazon SNS) 和 Amazon Simple Queue Service (Amazon SQS)。
Amazon Simple Notification Service (Amazon SNS)
Amazon Simple Notification Service (Amazon SNS) 是一项发布/订阅服务。发布者使用 Amazon SNS 主题将消息发布给订阅者。这与咖啡店类似:收银员向制作咖啡的咖啡师提供咖啡订单。
在 Amazon SNS 中,订阅者可以是 Web 服务器、电子邮件地址、AWS Lambda 函数或其他对象。
示例:Amazon SNS
Amazon SNS步骤1Amazon SNS步骤2
虽然咖啡店这个示例涉及到的订阅者是人,但在 Amazon SNS 中,订阅者可以是 Web 服务器、电子邮件地址、AWS Lambda 函数或其他对象。
Amazon Simple Queue Service (Amazon SQS)
Amazon Simple Queue Service (Amazon SQS) 是一项消息队列服务。
借助 Amazon SQS,您可以在软件组件之间发送、存储和接收消息,而且不会丢失消息,也不需要使用其他服务。在 Amazon SQS 中,应用程序将消息发送到队列中。用户或服务从队列中检索消息,进行处理,然后将其从队列中删除。
示例:Amazon SQS
Amazon SQS步骤1Amazon SQS步骤1:假设咖啡店有一个订购流程,其中收银员负责接收订单,咖啡师负责制作顾客订购的咖啡。可以把收银员和咖啡师看作应用程序的两个独立组件。
首先,收银员接收订单并将其记录在纸上。然后,收银员把这张纸交给咖啡师。最后,咖啡师制作咖啡并将它端给顾客。
接到下一个订单时,他们就重复这一流程。只要收银员和咖啡师协调一致,这一流程就可以顺利进行。
如果收银员接收了订单并把它交给咖啡师,而咖啡师正在休息或忙着处理其他订单,会发生什么情况?收银员需要一直等待,直到咖啡师可以接订单为止。这会导致订购流程出现延迟,顾客需要等待更长时间才能收到咖啡。
随着咖啡店越来越受欢迎,排队时间越来越长,咖啡店店主发现到当前的订购流程既耗时又效率低下。他们决定尝试一种不同的方法,就是使用队列。
Amazon SQS步骤2
Amazon SQS步骤2:收银员和咖啡师还是应用程序的两个独立组件。Amazon SQS 这样的消息队列服务支持在解耦的应用程序组件之间传递消息。
在本示例中,流程的第一步与之前相同:顾客向收银员下单。
收银员将订单放入队列中。您可以将它视为订单处理板,作为收银员和咖啡师之间的缓冲。即使咖啡师正在休息或忙着处理其他订单,收银员仍然可以在队列中不断排入新订单。
然后,咖啡师查看队列并检索订单。
咖啡师准备咖啡并将它端给顾客。
然后,咖啡师从队列中删除已完成的订单。
在咖啡师准备咖啡的同时,收银员可以继续接收新订单并将其添加到队列中。
其他计算服务
无服务器计算
在本模块前面的部分中,您了解了 Amazon EC2 这种可以在云中运行虚拟服务器的服务。如果想要在 Amazon EC2 中运行应用程序,您必须:
- 预置实例(虚拟服务器)
- 上传代码。
- 在应用程序运行时继续管理实例。
“无服务器”一词是指您的代码在服务器上运行,但您无需预置或管理这些服务器。借助无服务器计算,您可以将更多精力放在新产品和功能创新上,而不是放在维护服务器上。
无服务器计算的另一项优势在于可以灵活地自动扩展无服务器应用程序。无服务器计算可以通过修改使用量(例如吞吐量和内存)来调整应用程序的容量。
用于无服务器计算的 AWS 服务是 AWS Lambda。
AWS Lambda
AWS Lambda 是一种让您能够在无需预置或管理服务器的情况下运行代码的服务。
使用 AWS Lambda 时,您只需为使用的计算时间付费。只有代码运行才会产生费用。您还可以为几乎任何类型的应用程序或后端服务运行代码,无需进行任何管理工作。
例如,用户可以通过一个简单的 Lambda 函数来自动调整上传到 AWS 云的图片的大小。在这种情况下,该函数在上传新图片时触发。
- 您将代码上传到 Lambda。
- 您将代码设置为从事件源(例如 AWS 服务、移动应用程序或 HTTP 终端节点)触发。
- Lambda 只在被触发时才运行代码
- 您只需为使用的计算时间付费。在前面调整图片大小的示例中,您只需为上传新图片后使用的计算时间付费。上传图片会触发 Lambda 运行调整图片大小函数的代码。
在 AWS 中,您还可以构建和运行容器化应用程序。
容器
容器可以提供一种标准方法,让您将应用程序的代码和依赖项打包到单个对象中。您还可以将容器用于对安全性、可靠性和可扩展性有重要要求的流程和工作流。
示例:容器
容器步骤1容器步骤2
容器编排服务可以帮助您部署、管理和扩展容器化应用程序。接下来,您将了解两种提供容器编排的服务:Amazon Elastic Container Service 和 Amazon Elastic Kubernetes Service。
Amazon Elastic Container Service (Amazon ECS)
Amazon Elastic Container Service (Amazon ECS) 是一种高度可扩展的高性能容器管理系统,让您可以在 AWS 上运行和扩展容器化应用程序。
Amazon ECS 支持 Docker 容器。Docker 是一种软件平台,让您能够快速构建、测试和部署应用程序。AWS 支持使用开源 Docker Community Edition 和基于订阅的 Docker Enterprise Edition。借助 Amazon ECS,您可以使用 API 调用来启动和停止支持 Docker 的应用程序。
Amazon Elastic Kubernetes Service (Amazon EKS)
Amazon Elastic Kubernetes Service (Amazon EKS)是一项完全托管的服务,可用于在 AWS 上运行 Kubernetes。
Kubernetes 是一款开源软件,让您能够大规模部署和管理容器化应用程序。Kubernetes 由一个大型志愿者社区维护,而 AWS 积极地与 Kubernetes 社区展开合作。随着 Kubernetes 应用程序的新功能特性发布,您可以轻松地将这些更新应用到由 Amazon EKS 管理的应用程序中。
AWS Fargate
AWS Fargate是一种适用于容器的无服务器计算引擎。它同时适用于 Amazon ECS 和 Amazon EKS。
使用 AWS Fargate 时,您无需预置或管理服务器。AWS Fargate 可以为您管理服务器基础设施。您可以将更多精力放在创新和应用程序开发上,并且只需为运行容器所需的资源付费。
网友评论