使用 Elastic Load Balancing 负载均衡器注册 Auto Scaling 组可帮助您设置具有负载均衡功能的应用程序。Elastic Load Balancing 与 Amazon A EC2 uto Scaling 配合使用,在健康的亚马逊 EC2实例中分配传入流量。这将提高应用程序的可扩展性和可用性。您可以在多个可用区内启用 Elastic Load Balancing 来提高应用程序的容错能力。
在本教程中,我们介绍了在创建 Auto Scaling 组时设置负载均衡的应用程序的基本步骤。如果在上云用云实际操作过程中遇到了问题,可找云伙伴翼龙云@yilongcloud获取帮助,包括免卡上云和构建优秀用云方案。
完成后,您的架构看起来应当如下图所示:
先决条件
负载均衡器和目标组。确保针对计划为 Auto Scaling 组使用的负载均衡器选择了相同的可用区。
启动模板或启动配置的安全组。安全组必须允许从侦听器端口(通常为 HTTP 流量的端口 80)和您希望 Elastic Load Balancing 用于运行状况检查的端口上的负载均衡器进行访问。
(可选)一个 IAM 角色,用于向您的应用程序授予访问权限 AWS。
(可选)定义为亚马逊 EC2实例源模板的亚马逊系统映像 (AMI)。要立即创建一个上述项,请启动一个实例。将 IAM 角色(如果已创建)和所需的任何配置脚本指定为用户数据。连接到实例并对其进行自定义。例如,您可以安装软件和应用程序、复制数据和连接更多的 EBS 卷。测试您的实例上的应用程序以确保实例配置正确。将此更新的配置另存为自定义 AMI。如果您以后不需要该实例,您可以终止它。从该新自定义 AMI 启动的实例包括您在创建 AMI 时设置的自定义项。
虚拟私有云 (VPC)。本教程引用默认 VPC,但您可以使用自己的 VPC。如果使用您自己的 VPC,请确保它拥有映射到您工作时所在区域的每个可用区的子网。您至少必须具有两个公有子网,且这些子网可用于创建负载均衡器。您还必须具有两个私有子网或两个公有子网,以创建 Auto Scaling 组并使用负载均衡器注册。
步骤 1:设置启动模板或启动配置
创建启动模板
- 打开 Amazon EC2 控制台,进入启动模板页面。
- 在顶部导航栏上,选择一个 AWS 区域。您创建的启动模板和自动扩缩组将会与您所指定的区域绑定。
- 选择Create launch template(创建启动模板)。
- 为启动模板的初始版本输入名称并提供描述。
- 对于 Application and OS Images (Amazon Machine Image) [应用程序和操作系统镜像(Amazon Machine Image)],选择实例 AMI 的 ID。您可以搜索所有可用的 AMI AMIs,也可以从 “最近” 或 “快速入门” 列表中选择 AMI。如果您没有看到所需的 AMI,请选择 “浏览更多” AMIs 以浏览完整的 AMI 目录。
- 对于 Instance type (实例类型),选择与您指定的 AMI 兼容的实例硬件配置。
- (可选)对于 Key pair (login) (密钥对(登录)),请输入在连接到您的实例时使用的密钥对。
- 对于 Network settings(网络设置),展开 Advanced network configuration(高级网络配置),然后执行以下操作:
选择 Add network interface(添加网络接口)以配置主网络接口。
对于自动分配公有 IP,请指定您的实例是否接收公有 IPv4 地址。默认情况下,如果实例在默认子网中启动,或者 EC2 实例启动到配置为自动分配公有 IPv4 地址的子网,Amazon EC2 会分配一个公有 IPv4 地址。如果不需要连接到您的实例,可以选择禁用以防止组中的实例直接从互联网接收流量。在这种情况下,它们将仅从负载均衡器接收流量。
对于 Security group ID (安全组 ID),从与负载均衡器相同的 VPC 中为您的实例指定一个安全组。
对于 Delete on termination (终止时删除),请选择 Yes (是)。这将在 Auto Scaling 组缩减并终止网络接口附加到的实例时删除网络接口。
- (可选)要将凭证安全地分配到实例,对于 Advanced details (高级详细信息) 和 IAM instance profile (IAM 实例配置文件),输入 IAM 角色的 Amazon Resource Name (ARN)。
- (可选) 要为实例指定用户数据或配置脚本,请将其粘贴到高级详细信息和用户数据。
- 选择Create launch template(创建启动模板)。
- 在确认页面上,选择 Create Auto Scaling group(创建 Auto Scaling 组)。
创建或选择启动配置
注意:强烈建议不要在新应用程序中使用启动配置,因为这是一项没有计划投资的旧版功能。此外,2023 年 6 月 1 日及之后创建的新账户都无法选择通过控制台创建新的启动配置。
可选择现有的启动配置,或者,要创建新的启动配置。
步骤 2:创建 Auto Scaling 组。
创建或选择启动模板或启动配置后,使用以下过程从中断的地方继续操作。
创建 Auto Scaling 组
- 在 Choose launch template or configuration(选择启动模板或配置)页面上,对于 Auto Scaling group name(Auto Scaling 组名称),输入 Auto Scaling 组的名称。
- [仅启动模板] 对于 Launch template(启动模板),选择 Auto Scaling 组在扩展时使用启动模板的默认版本、最新版本还是特定版本。
- 选择 Next(下一步)。此时将显示页面 Choose instance launch options(选择实例启动选项),以便选择您希望 Auto Scaling 组使用的 VPC 网络设置,并提供启动按需型实例和竞价型实例的选项(如果您选择了启动模板)。
- 在 Network(网络)部分中,对于 VPC,选择您用于负载均衡器的 VPC。如果您选择了默认 VPC,则它会自动配置为向您的实例提供 Internet 连接。此 VPC 在区域的每个可用区中均包含一个公有子网。
- 对于 Availability Zones and subnets(可用区和子网),根据负载均衡器所在的可用区从要包含的每个可用区中选择一个或多个子网。有关更多信息,请参阅 选择 VPC 子网时的注意事项。
- [仅限启动模板] 在 Instance type requirements(实例类型要求)部分中,使用默认设置简化此步骤。(请勿覆盖启动模板。) 在本教程中,您将仅使用启动模板中指定的实例类型启动按需实例。
- 选择 Next(下一步)转至 Configure advanced options(配置高级选项)页面。
- 要将组连接到现有的负载均衡器,请在 Load balancing (负载均衡) 部分中选择 Attach to an existing load balancer (连接到现有负载均衡器)。您可以选择 Choose from your load balancer target groups (从负载均衡器目标组中进行选择) 或 Choose from Classic Load Balancers (从经典负载均衡器中选择)。然后,您可以为创建的 Application Load Balancer 或 Network Load Balancer 选择目标组的名称,或者选择经典负载均衡器的名称。
- (可选)对于运行状况检查、其他运行状况检查类型,请选择启用 Elastic Load Balancing 运行状况检查。
- (可选)对于运行状况检查宽限期,输入时间长短(以秒为单位)。这段时间是 Amazon A EC2 uto Scaling 在实例进入状态后需要等待多长时间才能检查其运行InService状况。有关更多信息,请参阅 设置自动扩缩组的运行状况检查宽限期。
- 完成 Auto Scaling 组的配置后,选择 Skip to review(跳过以审核)。
- 在 Review(审核)页面上,审核 Auto Scaling 组的详细信息。您可以选择 Edit(编辑)进行更改。在完成后,选择 Create Auto Scaling group(创建 Auto Scaling 组)。
在创建附加了负载均衡器的 Auto Scaling 组后,负载均衡器会在新实例联机时自动注册这些实例。此时,您只有一个实例,因此要注册的内容并不多。不过,您可以通过更新组的所需容量来添加其他实例。
步骤 3:验证是否已附加您的负载均衡器
- 在亚马逊 EC2 控制台的 A uto Scaling 群组页面上,选中 Auto Scaling 群组旁边的复选框。
- 在详细信息选项卡上,负载均衡将显示任何附加的负载均衡器目标组或经典负载均衡器。
- 在 Activity(活动)选项卡上,在Activity history(活动历史记录)中,您可以验证您的实例是否已成功启动。Status(状态)列显示 Auto Scaling 组是否具有已成功启动的实例。如果您的实例无法启动,您可以在 对 Amazon A EC2 uto Scaling 中的问题进行故障排除 中找到常见实例启动问题的故障排除思路。
- 在 Instance management(实例管理)选项卡上的 Instances(实例)下,可以验证您的实例是否准备好接收流量。最初,您的实例处于 Pending 状态。在实例准备好接收流量时,其状态为 InService。“运行状况” 列显示对您的实例进行 Amazon A EC2 uto Scaling 运行状况检查的结果。尽管实例可能标记为运行状况良好,但负载均衡器只会向通过负载均衡器运行状况检查的实例发送流量。
- 验证您已向负载均衡器注册您的实例。打开 Amazon EC2 控制台的 “目标群组” 页面。选择您的目标组,然后选择 Targets(目标)选项卡。如果实例的状态为 initial,这可能是因为它们仍在注册过程中,或者它们仍在进行运行状况检查。当实例状态为 healthy 时,即可供使用。
步骤 4:后续步骤
Amazon A EC2 uto Scaling 根据您的 Auto Scaling 组使用的运行状况检查的状态来确定实例是否运行正常。如果您启用负载均衡器运行状况检查,并且实例未通过运行状况检查,自动扩缩组即认为该实例运行状况不正常并进行替换。
可以将应用程序扩展到同一区域中的其他可用区,来提高服务中断时的容错能力。
您可以将 Auto Scaling 组配置为使用目标跟踪扩展策略。这会在实例需求变化时自动增加或减少实例数量。这将允许该组处理应用程序接收的流量的变化。
第 5 步:清理
您可以删除扩缩基础设施,或者仅删除自动扩缩组而保留启动模板以供将来使用。
如果您启动的实例不在 AWS 免费套餐范围内,则应终止实例以避免产生额外费用。当您终止实例时,与其关联的数据也将被删除。
删除 Auto Scaling 组
打开亚马逊 EC2 控制台的 A uto Scaling 群组页面。
选中您的自动扩缩组 (my-first-asg) 旁边的复选框。
选择删除。
当系统提示进行确认时,键入 delete 以确认删除指定自动扩缩组,然后选择 Delete(删除)。
名称列中的加载图标指示 Auto Scaling 组正在被删除。发生删除时,Desired(所需)、Min(最小)和 Max(最大)列显示 Auto Scaling 组具有 0 个实例。终止实例并删除组需要几分钟时间。刷新列表以查看当前状态。
如果要保留启动模板,请跳过以下过程。
删除启动模板
打开 Amazon EC2 控制台的启动模板页面。
选择您的启动模板 (my-template-for-auto-scaling)。
选择 Actions(操作),然后选择 Delete template(删除模板)。
当系统提示进行确认时,键入 Delete 以确认删除指定启动模板,然后选择 Delete(删除)。