Elastic Load Balancing 层 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Elastic Load Balancing 层

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够照常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时这些工具或资源将停用。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

Elastic Load Balancing 的工作方式与 AWS OpsWorks Stacks 层略有不同。原来的做法是创建一个层然后在其中添加实例,现在是使用 Elastic Load Balancing 控制台或 API 创建一个负载均衡器,然后将它挂载到现有层。除了将流量分发到层的实例之外,Elastic Load Balancing 将执行以下操作:

  • 检测运行不正常的 Amazon EC2 实例并将流量重新路由至其他运行正常的实例,直到运行不正常的实例恢复。

  • 自动扩展请求处理容量来响应传入流量。

  • 如果您启用连接耗尽,负载均衡器会停止将新请求发送给运行不正常或即将注销的实例,但会保持连接处于活动状态直至指定的超时值,从而允许实例完成任何已在发送途中的请求。

在将负载均衡器挂载到某个层之后,AWS OpsWorks Stacks 将执行以下操作:

  • 注销当前已注册的任何实例。

  • 在该层的实例(包括基于负载和基于时间的实例)联机时自动将其注册,并在它们脱机时自动将其注销。

  • 自动开始将请求路由到可用区中的注册实例。

如果您已启用负载均衡器的连接耗尽功能,则可指定 AWS OpsWorks Stacks 是否支持它。如果您启用连接耗尽支持 (默认设置),则在实例关闭之后,AWS OpsWorks Stacks 将执行以下操作:

  • 从负载均衡器注销实例。

    负载均衡器将停止发送新请求并开始连接耗尽。

  • 延迟触发关闭生命周期事件,直至负载均衡器完成连接耗尽。

如果您没有启用连接耗尽支持,则只要实例关闭,AWS OpsWorks Stacks 就会触发关闭事件,即使实例仍连接到负载均衡器也是如此。

要对堆栈使用 Elastic Load Balancing,您必须先使用 Elastic Load Balancing 控制台、CLI 或 API 在同一区域中创建一个或多个负载均衡器。您应了解以下事项:

  • 您只能将一个负载均衡器挂载到一个层。

  • 每个负载均衡器只能处理一个层。

  • AWS OpsWorks 堆栈不支持 Application Load Balancer。您只能将 Classic Load Balancer 与 AWS OpsWorks Stacks 配合使用。

这意味着,您必须为要平衡的每个堆栈中的每个层创建一个单独的 Elastic Load Balancing 负载均衡器,并且仅将其用于该用途。建议的做法是,为您计划用于 AWS OpsWorks Stacks 的每个 Elastic Load Balancing 负载均衡器分配一个不同的名称(如 MyStack1-RailsLayer-ELB),从而避免将一个负载均衡器用于多个用途。

重要

建议为您的 AWS OpsWorks Stacks 层创建新的 Elastic Load Balancing 负载均衡器。如果您选择使用现有的 Elastic Load Balancing 负载均衡器,应先确认它当前未用于其他用途并且没有挂载实例。将负载均衡器挂载到该层之后,OpsWorks 将删除任何现有实例并将负载均衡器配置为仅处理该层的实例。从技术上来说,在将某个负载均衡器挂载到层之后使用 Elastic Load Balancing 控制台或 API 来修改它的配置尽管是可行的,但您不应如此操作;更改将不会是永久的。

将 Elastic Load Balancing 负载均衡器附加到层
  1. 如果您尚未这样操作,请使用 Elastic Load Balancing 控制台、API 或 CLI 在堆栈的区域中创建一个负载均衡器。当您创建负载均衡器时,请执行以下操作:

    • 请务必指定适用于您的应用程序的运行状况检查 Ping 路径。

      默认 Ping 路径为 /index.html,因此如果您的应用程序根目录不包括 index.html,则必须指定适当的 ping 路径,否则运行状况检查将失败。

    • 如果您要使用连接耗尽,请确保此功能已启用并且具有适当的超时值。

    有关更多信息,请参阅 Elastic Load Balancing

  2. 创建层 (您希望已平衡的层) 或编辑现有层的网络设置

    注意

    您无法在创建自定义层时挂载负载均衡器。您必须编辑层的设置。

  3. Elastic Load Balancing 下,选择您要附加到层的负载均衡器并指定您是否希望 AWS OpsWorks Stacks 支持连接耗尽。

将负载均衡器挂载到层之后,AWS OpsWorks Stacks 将在堆栈的实例上触发配置生命周期事件以向它们通知更改。AWS OpsWorksStacks 还将在您分离负载均衡器时触发配置事件。

注意

在实例启动之后,AWS OpsWorks Stacks 将运行设置和部署配方以安装程序包和部署应用程序。这些配方完成后,实例将处于联机状态并且 AWS OpsWorks Stacks 将向 Elastic Load Balancing 注册实例。AWS OpsWorksStacks 还将在实例处于联机状态之后触发配置事件。这意味着,Elastic Load Balancing 注册和配置配方可并发运行,并且可在配置配方完成之前注册实例。要确保配方在向 Elastic Load Balancing 注册实例之前完成,您应将配方添加到层的设置或部署生命周期事件。有关更多信息,请参阅执行配方

从负载均衡器中删除实例有时也很有用。例如,当您更新一个应用程序时,建议您将该应用程序部署到单个实例并确认该应用程序在部署到每个实例之前正常运行。您通常会从负载均衡器删除该实例,因此该实例在您验证更新之前不会收到用户请求。

您必须使用 Elastic Load Balancing 控制台或 API 来从负载均衡器中暂时删除联机实例。下面介绍了如何使用此控制台。

从负载均衡器暂时删除实例
  1. 打开 Amazon EC2 控制台并选择负载均衡器

  2. 选择适当的负载均衡器并打开 Instances 选项卡。

  3. 在实例的 Actions 列中选择 Remove from Load Balancer

  4. 完成后,选择 Edit Instances,并将实例返回到负载均衡器。

重要

如果您使用 Elastic Load Balancing 控制台或 API 来删除负载均衡器中的实例,还必须使用 Elastic Load Balancing 将实例放回负载均衡器中。AWS OpsWorksStacks 不了解您使用其他服务控制台或 API 执行的操作,它将不会为您将实例返回到负载均衡器。有时, AWS OpsWorks 堆栈可以将实例添加回 ELB,但不保证在所有情况下都会发生这种行为。

您可将多个负载均衡器挂载到一组特定的实例,如下所示:

挂载多个负载均衡器
  1. 使用 Elastic Load Balancing 控制台、API 或 CLI 创建一组负载均衡器。

  2. 为每个负载均衡器创建一个自定义层并将其中一个负载均衡器挂载到该层。您无需为这些层实施任何自定义配方;默认自定义层已足够。

  3. 为每个自定义层添加一组实例

您可以转到“Instances”页并单击相应的负载均衡器名称,从而检查负载均衡器的属性。

ELB 页显示负载均衡器的基本属性,包括其 DNS 名称和关联实例的运行状况。如果堆栈在 VPC 中运行,则此页将显示子网而不是可用区。绿色对勾符号指示运行正常的实例。您可单击相应的名称来通过负载均衡器连接到某个服务器。