Introduction to Amazon EC2

实验概览

Amazon Elastic Compute Cloud (Amazon EC2) 是一项 Web 服务,可在云中提供大小可调的计算容量。该服务旨在让开发人员能更轻松地进行 Web 规模的云计算。

Amazon EC2 的 Web 服务接口非常简单,让你可以轻松获取和配置容量。你可以使用该服务完全控制自己的计算资源,还可以在成熟的 Amazon 计算环境中运行资源。Amazon EC2 将获取并启动新服务器实例所需要的时间缩短至几分钟,这样一来,在你的计算要求发生变化时,你便可以快速扩展或缩减计算容量。

Amazon EC2 按你实际使用的容量收费,改变了计算的经济性。Amazon EC2 还为开发人员提供了相关工具,创建能够迅速从故障中恢复的应用程序,并避免常见故障。

目标

完成本实验后,你将能够:

启动终止保护已启用的 Web 服务器。

监控 EC2 实例。

修改 Web 服务器用来允许 HTTP 访问的安全组。

调整 Amazon EC2 实例的大小,进行扩展。

测试终止保护。

终止 EC2 实例。

任务 1:启动 Amazon EC2 实例

在本任务中,你将启动终止保护已启用的 Amazon EC2 实例。终止保护可防止意外终止 EC2 实例。你的实例将包含一个用户数据脚本,该脚本将用来安装一个简单的 Web 服务器。

  1. 在 AWS 管理控制台中,使用 AWS 搜索栏搜索 EC2,然后从结果列表中选择该服务。

在屏幕左上角,如果你看到 New EC2 Experience(新 EC2 体验),请确保已选中 New EC2 Experience(新 EC2 体验)。

  1. 选择 启动实例 下拉菜单,然后选择启动实例。

在名称和标签部分,在名称框中输入 Web Server。

  1. 对于亚马逊云机器镜像 (AMI),选择 Amazon Linux 2 AMI。

本实验将仅使用 Amazon Linux 2 AMI。

Amazon Machine Image (AMI) 提供启动实例所需的信息,该实例是云中的一个虚拟服务器。

系统将提示您选择 Amazon 系统映像 (AMI),该 AMI 是实例根卷的模板,可包含操作系统、应用程序服务器和应用程序。您可以使用 AMI 来启动实例,该实例是在云中作为虚拟服务器运行的 AMI 的副本。

AMI 可用于各种版本的 Windows 和 Linux。在本实验中,您将启动一个运行 Amazon Linux 的实例。

  1. 在实例类型部分中,选择实例类型下拉菜单,然后选择 t3. micro。 Amazon EC2 提供了多种经过优化的实例类型,适合不同的使用案例。实例类型包括由 CPU、内存、存储和网络容量组成的不同组合,使你能够灵活地为应用程序选择适当的资源组合。每种实例类型都包括一种或多种实例大小,从而使你能够扩展资源以满足目标工作负载的要求。

一个 t3. micro 实例类型具有 2 个虚拟 CPU 和 1GiB 内存。

  1. 在密钥对 (登录) 部分,找到密钥对名称下拉菜单,然后选择在没有密钥对的情况下继续 (不推荐)。 Amazon EC2 使用公有密钥加密法来加密和解密登录信息。要登录你的实例,你必须创建密钥对,并在启动该实例时指定密钥对名称,然后在连接到该实例时提供私有密钥。

注:在本实验中,你将不登录你的实例,因此你不需要密钥对。

  1. 在 Network settings(网络设置)部分,选择 Edit(编辑)按钮。做出以下选择: VPC:选择名称包含 Lab VPC 的 VPC Subnet(子网):选择名称包含 Public Subnet 1 的子网 网络指示要在哪个 Virtual Private Cloud (VPC) 中启动实例。你可以拥有多个网络,例如分别用于开发、测试和生产的不同网络。

实验 VPC 是在实验的设置过程中使用 CloudFormation 模板创建的。此 VPC 在两个不同的可用区中包含两个公有子网。

  1. 在防火墙 (安全组) 部分,选择 创建安全组 安全组名称 = Web Server security group Description(描述)= Security group for my web server 安全组充当虚拟防火墙,用于控制一个或多个实例的流量。启动某个实例时,你需要将一个或多个安全组与该实例关联。你可以向每个安全组添加规则,以便允许流量流入或流出关联实例。你可以随时修改安全组的规则;新规则将自动应用于与该安全组关联的所有实例。

注:在本实验中,你将不使用 SSH 登录到实例。撤销 SSH 访问权限将提高实例的安全性。

选择 删除 按钮,删除现有 SSH 规则。你应该没有安全组规则。

可以保留 Configure storage(配置存储)部分的默认选择。

  1. Amazon EC2 将数据存储在名为 Elastic Block Store 的网络附加虚拟磁盘上。

你将使用默认的 8GiB 磁盘卷启动 Amazon EC2 实例。该卷将是你的根卷(也称为 “启动” 卷)。

  1. 展开 Advanced Details(高级详细信息)部分。向下滚动到 Termination protection(终止保护)下拉菜单,并设置为 Enable(启用)。 当你不再需要某个 Amazon EC2 实例时,可以将其终止,这意味着该实例被停止,其资源被释放。终止的实例无法再次启动。如果要防止实例意外终止,你可以为实例启用终止保护以防止实例终止。

向下一直滚动到底部,直到看到 User data(用户数据)字段。 当你启动实例时,可以将用户数据传递给实例,这些数据可用于执行常见的自动配置任务,甚至可以在实例启动后运行脚本。

你的实例正在运行 Amazon Linux,因此你要提供一个将在实例启动时运行的 shell 脚本。

复制以下文本,并将其粘贴到 User data(用户数据)字段中:

#!/bin/bash
yum -y install httpd
systemctl enable httpd
systemctl start httpd
echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index. html

该脚本将执行以下操作:

安装 Apache Web 服务器 (httpd)

配置该 Web 服务器以在启动时自动启动

激活 Web 服务器

创建简单的网页

选择 启动实例。

  1. 从左侧窗格的可折叠菜单中,选择 Instances(实例)。你可能需要展开菜单才会看到此选项。 该实例可能会显示为 Pending(待处理)状态,表示它正在启动。随后该实例的状态将变为 running(正在运行),这表示实例已经开始启动。在创建新实例时,通常你很快就可以访问该实例。

等待你的实例显示以下内容: 实例状态: Running(正在运行)。 状态检查: 2/2 项检查已通过 (2/2 checks passed)。 如果 “实例状态” 或 “状态检查” 值没有任何变化,请定期刷新页面。

选中你新创建的 Web Server 实例对应的 ,详细信息选项卡显示有关实例的详细信息。

要在 Details(详细信息)选项卡中显示更多信息,请向上拖动窗口分隔线。

查看 Details(详细信息)选项卡中显示的信息。其中包括有关实例类型、安全设置和网络设置等的信息。该实例获得一个 Public IPv4 DNS(公有 IPv4 DNS)名称,可用于让你通过互联网与该实例通信。

任务 2:监控你的实例

监控是保持 Amazon Elastic Compute Cloud (Amazon EC2) 实例和 AWS 解决方案的可靠性、可用性和性能的重要一环。

  1. 选择状态检查选项卡。 通过实例状态监控,你可以快速确定 Amazon EC2 是否检测到任何可能阻止实例运行应用程序的问题。Amazon EC2 对每个正在运行的 EC2 实例执行自动检查,以确定硬件和软件问题。

请注意,已通过 System reachability(系统可访问性)和 Instance reachability(实例可访问性)检查。

选择 Monitoring(监控)选项卡。 此选项卡显示实例的 CloudWatch 指标。目前,由于实例是最近启动的,因此没有多少指标可显示。

你可以选择一个图表来查看展开的视图。

Amazon EC2 将 EC2 实例的指标发送到 Amazon CloudWatch。默认情况下启用基本(5 分钟)监控。你可以启用详细(1 分钟)监控。

  1. 选择 操作 菜单(位于控制台右上角),再选择监控和故障排除 ,然后选择获取系统日志。 预期输出: alt text 注意:如果你没有看到系统日志,请等待几分钟并刷新日志屏幕,直到其出现。

系统日志将显示实例的控制台输出,它是一种很重要的问题诊断工具。系统日志对于解决内核问题和服务配置问题特别有用,这些问题可能会导致实例在其 SSH daemon 启动之前终止或无法访问。

滚动浏览输出,并注意到 httpd 包已根据你在创建实例时添加的用户数据安装。

向下滚动到浏览器窗口的底部,然后选择 Cancel(取消)。

  1. 选中 Web Server 实例对应的 ,然后选择 操作 菜单,再依次选择监控和故障排除 和获取实例屏幕截图。

预期输出: alt text

系统此时会向你展示当屏幕与 Amazon EC2 实例控制台关联时,该控制台的外观。

如果你无法通过 SSH 或 RDP 访问你的实例,你可以捕获实例的屏幕截图,并将其作为图像查看。这可以让你了解实例的状态,更快地进行故障排除。

向下滚动到浏览器窗口的底部,然后选择 Cancel(取消)。

任务 3:更新你的安全组并访问 Web 服务器

在启动 EC2 实例时,你提供了一个脚本,用于安装 Web 服务器并创建简单的网页。在此任务中,你将从该 Web 服务器访问内容。

  1. 选中 Web Server 实例对应的 ,然后选择详细信息选项卡。

在左侧导航窗格中,选择 Security Groups(安全组)。

选中安全组名称为 Web Server security group 的安全组 ID 值对应的 。

此安全组当前没有规则。

  1. 选择 Inbound rules(入站规则)选项卡。

选择 Edit inbound rules(编辑入站规则)。

选择 添加规则,然后进行以下配置:

Type(类型):HTTP Source(源):Anywhere-IPv4 选择 Save rules(保存规则)。 新的入站 HTTP 规则将为 IPV4 IP 地址 (0. 0. 0. 0/0) 和 IPV6 IP 地址 (::/0) 创建一个条目。

注意:使用 “Anywhere”,或具体而言,使用 0. 0. 0. 0/0 或 ::/0 并不是推荐用于生产工作负载的最佳实践。

你现在应更新安全组以允许端口 80 上的 Web 流量通过。

  1. 将实例的 Public IPv4 address(公有 IPv4 地址)复制到剪贴板。

在 Web 浏览器中打开新的标签页,在浏览器中输入 http:// 并粘贴你刚刚复制的 IP 地址,然后按 Enter 键。

预期输出:

您应当看到消息欢迎访问 Web 服务器!(Hello From Your Web Server!)

任务 4:调整实例大小:实例类型和 EBS 卷

随着需求的变化,你可能会发现存在实例过度利用(太小)或利用不足(太大)的情况。如果是这样,你可以更改实例类型。例如,如果 t3. micro 实例过小,无法满足其工作负载的需求,你可以改用 t3. small 实例。同样,你也可以更改磁盘的大小。

  1. 停止实例 你必须先停止实例,然后才能调整其大小。

当你停止某个实例时,它会关闭。已停止的 EC2 实例不会产生任何费用,但连接的 Amazon EBS 卷仍会产生存储费用。

在 EC2 Management Console(EC2 管理控制台)中,选择左侧导航窗格中的 Instances(实例)。

选中 Web Server 实例对应的 (如果尚未选中)。

选择 实例状态 ,然后选择停止实例。

选择 停止。

你的实例将执行正常的关闭操作,然后停止运行。该过程可能需要几分钟的时间。

等待实例状态显示为 已停止。 2. 更改实例类型 选中 Web Server 实例对应的 (如果尚未选中)。

选择 操作 菜单,再依次选择实例设置 和更改实例类型,然后进行以下配置:

Instance type(实例类型):t3. small 选择 应用。 再次启动时,实例将为 t3. small,它的内存是 t3. micro 实例的两倍。

  1. 调整 EBS 卷的大小 在左侧导航窗格中,选择卷(位于 Elastic Block Store 部分)。

在此处选择 相应卷。

在 操作 菜单中,选择修改卷。

当前磁盘卷的大小为 8GiB。现在,你将增加该磁盘的大小。

将大小 (GiB) 的值更改为 10

选择 修改。

选择 修改,确认并增加卷的大小。

启动大小经过调整的实例 现在,你将再次启动实例,该实例现在将具有更多的内存和更多的磁盘空间。

在左侧导航窗格中,选择 Instances(实例)。

选中 Web Server 实例对应的 。

  1. 选择 实例状态 ,然后选择启动实例。

注意:正在修改的 EBS 卷会经历一系列状态:Modifying(正在修改)、Optimizing(正在优化)和 finally Complete(最终完成)。

任务 5:测试终止保护

当你不再需要实例时,可将其删除。这项操作称为终止实例。实例终止后,你将无法连接或重启该实例。

  1. 在左侧导航窗格中,选择 Instances(实例)。

选中 Web Server 实例对应的 。

依次选择 实例状态 和终止实例。

选择 终止。

此时,你会在页面顶部看到以下错误消息:

Failed to terminate an instance: The instance ‘i-xxxxxxxx’ may not be terminated. Modify its ‘disableApiTermination’ instance attribute and try again. (终止实例失败:无法终止实例 “i-xxxxxxxx”。请修改其 “disableApiTermination” 实例属性,然后重试。)

预计会出现上述错误,这是一种保护措施,用于防止意外终止实例。如果确实要终止实例,则你需要禁用终止保护。

  1. 选择 操作 ,然后依次选择实例设置和更改终止保护。

取消选中 Enable(启用)。

选择 Save(保存)。

你现在可以终止该实例。

刷新 实例控制台屏幕。

选中 Web 服务器实例对应的

  1. 选择 实例状态 ,然后选择终止实例。

选择 终止。

预期输出:

大约 30 秒后,Web 服务器实例的实例状态应该会更改为 Terminated(已终止)。