

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

# Elastic Load Balancing 层
<a name="layers-elb"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

Elastic Load Balancing 的工作原理与 OpsWorks Stacks 层略有不同。原来的做法是创建一个层然后在其中添加实例，现在是使用 Elastic Load Balancing 控制台或 API 创建一个负载均衡器，然后将它挂载到现有层。除了将流量分发到层的实例之外，Elastic Load Balancing 将执行以下操作：
+ 检测运行状况不佳的 Amazon EC2 实例，并将流量重新路由到剩余的运行状况良好的实例，直到恢复运行状况不佳的实例。
+ 自动扩展请求处理容量来响应传入流量。
+ 如果您启用[连接耗尽](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-conn-drain.html)，负载均衡器会停止将新请求发送给运行不正常或即将注销的实例，但会保持连接处于活动状态直至指定的超时值，从而允许实例完成任何已在发送途中的请求。

将负载均衡器连接到层后， OpsWorks Stacks 会执行以下操作：
+ 注销当前已注册的任何实例。
+ 在该层的实例（包括基于负载和基于时间的实例）联机时自动将其注册，并在它们脱机时自动将其注销。
+ 自动开始将请求路由到可用区中的注册实例。

如果您启用了负载均衡器的[连接耗尽](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-conn-drain.html)功能，则可以指定 OpsWorks Stacks 是否支持该功能。如果您启用连接耗尽支持（默认设置），则在实例关闭后， OpsWorks Stacks 会执行以下操作：
+ 从负载均衡器注销实例。

  负载均衡器将停止发送新请求并开始连接耗尽。
+ 延迟触发[关闭生命周期事件](workingcookbook-events.md)，直至负载均衡器完成连接耗尽。

如果您不启用连接耗尽支持， OpsWorks Stacks 会在实例关闭后立即触发 Shutdown 事件，即使该实例仍连接到负载均衡器也是如此。

要对堆栈使用 Elastic Load Balancing，您必须先使用 Elastic Load Balancing 控制台、CLI 或 API 在同一区域中创建一个或多个负载均衡器。您应了解以下事项：
+ 您只能将一个负载均衡器挂载到一个层。
+ 每个负载均衡器只能处理一个层。
+ OpsWorks 堆栈不支持 Application Load Balancer。您只能将 Classic Load Balancer 与 OpsWorks Stacks 配合使用。

这意味着，您必须为要平衡的每个堆栈中的每个层创建一个单独的 Elastic Load Balancing 负载均衡器，并且仅将其用于该用途。建议的做法是为您计划与 OpsWorks 堆栈一起使用的每个 Elastic Load Balancing 负载均衡器分配一个独特的名称，例如 MyStack 1-RailsLayer-ELB，以避免将负载均衡器用于多个目的。

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

**将 Elastic Load Balancing 负载均衡器附加到层**

1. 如果您尚未这样操作，请使用 [Elastic Load Balancing 控制台](https://console.aws.amazon.com/ec2/#s=LoadBalancers)、API 或 CLI 在堆栈的区域中创建一个负载均衡器。当您创建负载均衡器时，请执行以下操作：
   + 请务必指定适用于您的应用程序的运行状况检查 Ping 路径。

     默认 Ping 路径为 `/index.html`，因此如果您的应用程序根目录不包括 `index.html`，则必须指定适当的 ping 路径，否则运行状况检查将失败。
   + 如果您要使用[连接耗尽](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/config-conn-drain.html)，请确保此功能已启用并且具有适当的超时值。

   有关更多信息，请参阅 [Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/Welcome.html)。

1. [创建层](workinglayers-basics-create.md) (您希望已平衡的层) 或[编辑现有层的网络设置](workinglayers-basics-edit.md)。
**注意**  
您无法在创建自定义层时挂载负载均衡器。您必须编辑层的设置。

1. 在 **Elastic L** oad Balancing 下，选择要连接到该层的负载均衡器，并指定是否希望 OpsWorks Stacks 支持连接耗尽。

将负载均衡器连接到层后， OpsWorks Stacks 会在堆栈的实例上触发[配置生命周期事件](workingcookbook-events.md)，以将更改通知它们。 OpsWorks 当您分离负载均衡器时，堆栈还会触发配置事件。

**注意**  
实例启动后， OpsWorks Stacks 会运行[安装和部署配方，用于](workingcookbook-executing.md)安装软件包和部署应用程序。这些配方完成后，实例将处于联机状态， OpsWorks Stacks 将该实例注册到 Elastic Load Balancing。 OpsWorks 实例上线后，堆栈还会触发配置事件。这意味着，Elastic Load Balancing 注册和配置配方可并发运行，并且可在配置配方完成之前注册实例。要确保配方在向 Elastic Load Balancing 注册实例之前完成，您应将配方添加到层的设置或部署生命周期事件。有关更多信息，请参阅 [执行配方](workingcookbook-executing.md)。

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

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

**从负载均衡器暂时删除实例**

1. 打开 [Amazon EC2 控制台](https://console.aws.amazon.com/ec2/)，然后选择**负载均衡器**。

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

1. 在实例的 **Actions** 列中选择 **Remove from Load Balancer**。

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

**重要**  
如果您使用 Elastic Load Balancing 控制台或 API 从负载均衡器中移除实例，则还必须使用 Elastic Load Balancing 将其放回。 OpsWorks Stacks 不知道您使用其他服务控制台或执行的操作 APIs，也不会为您将实例返回到负载均衡器。有时， OpsWorks Stacks 可以将实例添加回 ELB，但这并不能保证行为，也不是在所有情况下都会发生。

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

**挂载多个负载均衡器**

1. 使用 [Elastic Load Balancing 控制台](https://console.aws.amazon.com/ec2/#s=LoadBalancers)、API 或 CLI 创建一组负载均衡器。

1. 为每个负载均衡器[创建一个自定义层](workinglayers-custom.md)并将其中一个负载均衡器挂载到该层。您无需为这些层实施任何自定义配方；默认自定义层已足够。

1. 为每个自定义层[添加一组实例](workinginstances-add.md)。

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

![\[PHP App Server table showing two online instances with their details and status.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/elb_view.png)


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

![\[ELB My-Stack-PHP settings showing DNS name, layer, region, and instance status.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/elb_properties.png)
