开始使用 AWS Local Zones 部署低延迟应用程序
简介
AWS Local Zones 是一种基础设施部署类型,可将计算、存储、数据库和其他选定的 AWS 服务放置在靠近人口聚居地和工业中心附近的位置,使您能够向终端用户提供个位数毫秒级延迟的应用程序。
概览
在本教程中,我们将带您了解如何在 AWS 全球基础设施中选择适合使用 Local Zones 部署工作负载的站点,而无需考虑这是为了满足低延迟、本地数据处理还是数据驻留的需求。然后,我们将逐步完成选择加入过程以执行如下操作:访问本地区域;扩展 Amazon VPC;在本地区域内部署 Amazon EC2 实例;最后在本地区域上部署基于浏览器的自托管轻量级速度测试应用程序,以测试延迟时间并将其与测试门户进行比较。
要完成的目标
在本指南中,您将学习如何:
- 选择适合在 AWS 中部署延迟敏感型工作负载的 AWS 基础设施
- 在 AWS 管理控制台上选择加入本地区域
- 将 Amazon VPC 从一个区域扩展到所选的本地区域
- 在本地区域内启动 EC2 T3 实例
- 清除资源
前提条件
完成本教程需要一个 AWS 账户。如果您还没有 AWS 账户,请先新建一个 AWS 账户。
AWS 使用经验
中级
完成时间
20–30 分钟
所需费用
本教程需要在 AWS Local Zones 上配置 EC2 t3.medium 实例。所需费用将取决于配置 t3.medium 实例的数量和时间以及所选的本地区域。
前提条件
- AWS 账户
- 推荐浏览器:最新版本的 Chrome 或 Firefox
[**]在过去 24 小时内新创建的账户可能无法使用本教程所需的服务。
使用的服务
代码
上次更新时间
2022 年 11 月 3 日
确定与您的站点之间延迟时间最短的 AWS 站点
若要在全球 AWS 基础设施中确定延迟时间最短的站点,您可以使用此测试门户,此门户提供从您所在位置对 AWS 区域和本地区域的延迟响应,并突出显示向您所在位置返回响应时延迟时间最短的 AWS 基础设施。该门户针对跨 AWS 区域和本地区域的终端运行 120 秒的性能测试,并以毫秒为单位测量延迟读数。为获取最准确的测量结果,请耐心等待测试完成。该门户将以绿色突出显示根据您所在位置部署延迟敏感型工作负载的最佳 AWS 站点。如果您需要将结果与每个位置的服务可用性进行比较,请参见 AWS Local Zones 功能页面或 AWS Regional Services(AWS 区域性服务)页面上的 AWS 服务可用性表,了解按区域划分的服务可用性。
注意:若要完成本教程,请确定延迟时间最短的本地区域(确保选择本地区域,而不是区域)。您应当从该工具中捕捉 Local Zone ID(本地区域 ID)及其 Parent Region(父区域),因为完成本指南需要这两个信息。
操作步骤
步骤 1:选择加入 AWS 本地区域
在此步骤中,您将在账户中启用 AWS 本地区域。默认情况下,本地区域处于禁用状态。根据之前的测试结果,在 AWS 管理控制台上选择正确的区域,用于启用已确定为具有最短延迟时间的本地区域。
1.1 — 登录 AWS 管理控制台,然后从右上角选择正确的区域。
1.2 — 现在打开 EC2 Dashboard(EC2 控制面板)。在 Account attributes(账户属性)部分中,选择 Zones(区域)。
1.3 — 选择要启用的本地区域,然后点击 Manage(管理)按钮。
1.4 — 选择 Enabled(已启用),然后选择 Update zone group(更新区域组)按钮 。
步骤 2:将 Amazon VPC 扩展到本地区域
2.1a — 前往 AWS 管理控制台上的 Amazon VPC,确认您拥有默认 VPC。在 Default VPC(默认 VPC)列中,查找对应值是否为 Yes(是)。
如果您没有默认 VPC,请继续执行步骤 2.1b;否则请跳转到步骤 2.2a。
2.1b(仅在需要时执行)— 如果您的账户/区域中没有默认 VPC,请按照 Amazon VPC 用户指南中创建默认 VPC 进行操作。
继续执行步骤 2.2a。
2.2a — 确认有一个互联网网关 (IGW) 连接到默认 VPC。前往 Filter by VPC(按 VPC 筛选),选择默认 VPC ID,然后选择 Internet gateways(互联网网关),接着确认有一个 IGW 连接到该 VPC。
如果没有 IGW 连接到您的默认 VPC,请继续执行步骤 2.2b;否则请跳转到步骤 2.3a。
2.2b(仅在需要时执行)— 如果您还没有与默认 VPC 相连的互联网网关,请创建一个互联网网关并将其连接到您的 VPC。从 Virtual private cloud(虚拟私有云)下拉菜单中选择 Internet gateways(互联网网关)。然后点击右上角的 Create Internet gateway(创建互联网网关)按钮,选择 Attach to VPC(连接到 VPC)。
继续执行步骤 2.3a。
2.3a — 验证您的默认路由表 (RTB) 中是否有指向互联网网关的默认路由。使用上一步中提到的 Filter by VPC(按 VPC 筛选)下的筛选器,然后从 Virtual private cloud(虚拟私有云)下拉菜单中选择 Route tables(路由表)。在 Main(主路由表)列中,您应当会看到列出的值为 Yes(是)。
如果 Target(目标)下不存在指向 IGW 的默认路由表 (0.0.0.0/0),请继续执行步骤 2.3b;否则请跳转到步骤 2.4。
2.3b(仅在需要时执行)— 在连接到默认 VPC 的主路由表中创建一个默认路由 (0.0.0.0/0)。使用先前步骤中提到的 Filter by VPC(按 VPC 筛选)下的筛选器,选择 Route tables(路由表),然后检查主路由表。选择 Routes(路由)页签,然后点击 Edit routes(编辑路由)按钮打开一个新窗口。
在 Edit routes(编辑路由)窗口中,添加指向默认 VPC 的默认路由。然后点击 Save changes(保存更改)按钮。
继续执行步骤 2.4。
2.4 — 创建一个子网,用作默认 VPC 的一部分,并将其映射到您在步骤 1.3 中启用的本地区域。在此阶段,默认 VPC 在区域和本地区域中都有一个子网,区域中的是默认子网。互联网网关将对于默认 VPC 及其所有子网均可用。
前往 VPC 控制面板。从左侧的 Virtual private cloud(虚拟私有云)下拉菜单中,选择 Subnets(子网)。接着点击 Create subnet(创建子网)按钮。然后,选择您的默认 VPC 并在 Subnet name(子网名称)字段中输入一个名称。在 Availability Zone(可用区)部分中,选择您的本地区域。在 Subnet settings(子网设置)部分中的 IPv4 CIDR block(IPv4 CIDR 块)下面,指定子网 CIDR,然后点击 Create subnet(创建子网)按钮。
注意:每个本地区域都一个专用、独立的外部 IP 地址空间块。本地区域不支持自带 IP 地址 (BYOIP)。
继续执行步骤 3。
步骤 3:在区域和本地区域中的公共子网中启动 t3.medium 实例
3.1 — 前往 Amazon EC2 控制台,然后点击 Launch Instance(启动实例)按钮。有关如何使用实例向导启动实例的详细信息,请参见使用新的实例启动向导启动实例。
(本教程以 EC2 T3 实例为例。EC2 实例类型的可用性因本地区域不同而有所差异。请参见我们的功能页面,了解各本地区域中可用实例类型的完整列表。如果在距离您最近的本地区域中无法使用 T3 实例,请选择其他可用的实例类型,然后继续执行本教程中的步骤。)
3.2 — 在 Launch an instance(启动实例)窗口中的 Name(名称)字段中,输入 WebApp-LatencyTest。接着选择 Amazon Linux 2 Amazon Machine Image (AMI)。
3.3 — 在 Instance type(实例类型)部分中,选择 t3.medium。然后选择 Next: Configure Instance Details(下一步:配置实例详细信息)。
3.4 — 确认您已配置密钥对(后续通过 SSH 访问 EC2 实例时需要使用该密钥对),然后选择它。
如果您在下拉菜单中没有找到密钥对,请选择 Create new key pair(创建新密钥对)进入 Create key pair(创建密钥对)窗口。在 Key pair name(密钥对名称)字段中,输入您的密钥对名称,并将默认参数保留原样。点击 Create key pair(创建密钥对)按钮以自动下载新密钥对。将该 .pem 文件保存在本地计算机的特定文件夹中,因为在后续步骤中您需要使用该文件通过 SSH 访问 EC2 实例。
3.5 — 对于 Network settings(网络设置),点击 Edit(编辑),然后选择您的默认 VPC 以及您在本地区域中创建的子网。
启用 Auto-assign public IP(自动分配公共 IP),以便为实例提供可公开访问的 IP 地址。
3.6 — 创建一个允许访问特定端口的安全组。
- 由于您需要连接到实例以安装速度测试应用程序,因此必须在该安全组中添加 TCP 端口 22 (通过 SSH 协议)。
- 该速度测试使用端口 80 (通过 HTTP 协议),因此必须在该安全组中添加 TCP 端口 80 (通过 HTTP 协议)。
在 Network settings(网络设置)的下一个环节,创建一个具有以下两条规则的安全组:
3.7 — 将其他选项保留原样,然后点击 Launch instance(启动实例)按钮。
步骤 4:安装速度测试应用程序并测试延迟时间
现在,我们将使用此 Github 存储库中托管的轻量级速度测试来测测量延迟时间。
您现在可以使用 SSH 客户端从 Unix shell 连接到您的实例。若您需要从 Windows 计算机访问该实例,请按照以下说明操作:使用 PuTTY 从 Windows 连接到 Linux 实例。若要简化实例连接过程,您可以勾选实例名称旁边的复选框,然后点击 Connect(连接)。
现在,选择 SSH client(SSH 客户端)页签,复制 Example(示例)下的 SSH 命令,并保存该命令,直到您对要由 SSH 客户端读取的 .pem 文件授予权限为止。
现在,在 Unix shell (Mac/Linux) 中运行以下命令:
chmod 400 <key-pair-name>.pem
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
Example:
ssh -i "speedtest2.pem" ec2-user@ec2-AA-BB-CC-DD.compute-1.amazonaws.com
Last login: Mon Oct 31 19:12:07 2022 from <your-public-ip>
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[ec2-user@ip-10-0-3-68 ~]$
接着,按照此指南中在 Amazon Linux 2 上安装 Docker 部分下的说明安装 Docker。您需要执行此操作来运行速度测试应用程序。
4.2 — 安装速度测试应用程序。
首先,通过运行以下命令来验证 Docker 是否已正确安装:
sudo docker info
然后安装 Docker 速度测试应用程序:
sudo docker run --name speedtest -d -p 80:80 e7db/speedtest
4.3 — 连接到 Web 界面并启动速度测试。
首先,在 EC2 控制台上的 Instances(实例)页面上,找到您的公共 IP 地址。
连接到以下 URL:http://<在此处插入 EC2 实例的公共 IP 地址>。您将看到以下界面:
若要开始测试,请点击 Start(启动)按钮。测试完成后,您将看到延迟、抖动、下载速度和上传速度的结果。
根据这些速度测试结果,您将能够确认延迟测量结果与从本地区域的测试门户获取的结果的接近程度。如果您将这些结果与区域中的结果进行比较,就会注意到从本地区域获取的值通常较低,这是因为流量会直接传到其网络边界组,无需遍历其父区域。此示例有助于确定与您所在位置之间延迟时间最短的 AWS 基础设施的类型和位置,这些信息与您和 AWS 基础设施之间的物理距离直接相关。
步骤 5:清除资源
现在,您已完成本教程,需要清除已创建的资源。
5.1 — 删除您的 EC2 实例。
您应当完成此步骤,确保在完成本教程之后不会继续产生 EC2 费用。在 EC2 控制台上,前往 Instances(实例)页面。从 Instance state(实例状态)下拉菜单中,选择 Terminate instance(终止实例)以终止 WebApp-LatencyTest 实例。
5.2 — 删除 AWS 本地区域中的扩展 VPC 子网。
在 Amazon VPC 控制台中,前往 Subnets(子网)页面,然后选择您在本地区域中部署的子网。
然后,从 Actions(操作)下拉菜单中,选择 Delete subnet(删除子网)以删除该子网。
5.3 — 接着删除您的安全组。从 Security(安全)下拉菜单中,选择 Security groups(安全组)。
然后选择您为该测试创建的安全组。
最后,从 Actions(操作)下拉菜单中,选择 Delete security groups(删除安全组)以删除该安全组。