

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

# 经典负载均衡器的已注册实例
<a name="elb-backend-instances"></a>

创建 Classic Load Balancer 后，您必须向负载均衡器注册您的 EC2 实例。您可以从与负载均衡器位于同一区域内的单个可用区或多个可用区中选择 EC2 实例。Elastic Load Balancing 会定期对注册的 EC2 实例执行运行状况检查，并自动将传入请求分配到已注册的运行状况良好的 EC2 实例中的负载均衡器的 DNS 名称。

**Topics**
+ [实例的最佳实践](#backend-instance-best-practices)
+ [关于 VPC 的建议](#set-up-ec2)
+ [向负载均衡器注册实例](elb-deregister-register-instances.md)
+ [运行状况检查](elb-healthchecks.md)
+ [安全组](elb-instances-security-groups.md)
+ [网络 ACLs](elb-instances-network-acls.md)

## 实例的最佳实践
<a name="backend-instance-best-practices"></a>
+ 您必须确保负载均衡器可同时在侦听器端口和运行状况检查端口上与实例进行通信。有关更多信息，请参阅 [为经典负载均衡器配置安全组](elb-vpc-security-groups.md)。您实例的安全组必须为负载均衡器的每个子网允许两个端口上的双向流量。
+ 在计划向负载均衡器注册的所有实例上安装 Web 服务器 (如 Apache 或 Internet Information Services (IIS))。
+ 对于 HTTP 和 HTTPS 侦听器，我们建议您在 EC2 实例中启用 keep-alive 选项，这样负载均衡器就可以将与您的实例的连接重复用于多个客户端请求。这样可减少 Web 服务器上的负载并提高负载均衡器吞吐量。保持活动超时应至少为 60 秒，以确保由负载均衡器负责关闭实例连接。
+ Elastic Load Balancing 支持路径最大传输单元 (MTU) 发现。要确保路径 MTU 发现可以正常运行，您必须确保实例的安全组允许使用需要 ICMP 分片 (类型 3，代码 4) 的消息。有关更多信息，请参阅《*亚马逊 EC2 用户指南》*中的 [MTU 发现路径](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)。

## 关于 VPC 的建议
<a name="set-up-ec2"></a>

**虚拟私有云（VPC）**  
除非您在 2014 年 AWS 账户 之前创建的，否则每个区域都有一个默认 VPC。可以使用负载均衡器的默认 VPC（如有），也可以创建新的 VPC。有关更多信息，请参阅 *[Amazon VPC 用户指南](https://docs.aws.amazon.com/vpc/latest/userguide/)*。

**您的负载均衡器的子网**  
要确保您的负载均衡器可以正确扩展，请验证您的负载均衡器的每个子网都具有一个带有至少一个 `/27` 位掩码 (例如 `10.0.0.0/27`) 的 CIDR 块和至少 8 个空闲 IP 地址。您的负载均衡器将使用这些 IP 地址与实例建立连接，并在需要时横向扩展。如果 IP 地址不足，则负载均衡器可能无法扩展，导致因容量不足而出现 503 错误。

在要启动实例的每个可用区中创建子网。根据您的应用程序，您可以在公有子网、私有子网或这两者的组合中启动实例。公有子网有一条指向互联网网关的路由。请注意，默认情况下，每个可用区 VPCs 都有一个公有子网。

当您创建负载均衡器时，必须将一个或多个公有子网添加到负载均衡器。如果实例在私有子网中，请在包含实例的子网所在的可用区中创建公有子网；您会将这些公有子网添加到负载均衡器。

**网络 ACLs**  
您 ACLs 的 VPC 的网络必须允许侦听器端口和运行状况检查端口上的双向流量。有关更多信息，请参阅 [ACLs Classic Load Balancer 实例的网络](elb-instances-network-acls.md)。

# 向经典负载均衡器注册实例
<a name="elb-deregister-register-instances"></a>

注册 EC2 实例会将其添加到您的负载均衡器中。负载均衡器连续监控其已启用的可用区中注册实例的运行状况，并将请求路由至运行正常的注册实例。如果对实例的需求上升，您可以向负载均衡器注册其他实例以处理需求。

注销 EC2 实例会将其从您的负载均衡器中移除。某个实例注销之后，负载均衡器立即停止将请求路由到该实例。如果需求降低，或者您需要维护实例，可以从负载均衡器注销实例。注销的实例仍保持运行，但不再从负载均衡器接收流量，您可以在准备好时再次向负载均衡器注册它。

注销实例时，Elastic Load Balancing 会等到进行中的请求完成（如果启用了 Connection Draining）。有关更多信息，请参阅 [配置经典负载均衡器的 Connection Draining](config-conn-drain.md)。

如果负载均衡器连接到某个 Auto Scaling 组，则该组中的实例会自动向负载均衡器注册。如果您从 Auto Scaling 组分离负载均衡器，则该组中的实例会注销。

Elastic Load Balancing 使用负载均衡器的 IP 地址将您的 EC2 实例注册到您的负载均衡器。

[EC2-VPC] 当您注册连接了弹性网络接口 (ENI) 的实例时，负载均衡器会将请求路由到该实例的主接口 (eth0) 的主要 IP 地址。

**Topics**
+ [注册实例](#elb-register-instances)
+ [查看向负载均衡器注册的实例](#elb-describe-load-balancer-instances)
+ [确定已注册实例的负载均衡器](#elb-describe-instance-load-balancer)
+ [注销实例](#elb-deregister-instances)

## 注册实例
<a name="elb-register-instances"></a>

准备就绪时，向负载均衡器注册实例。如果实例位于为负载均衡器启用的可用区中，那么实例只要通过所需数量的运行状况检查，即可从负载均衡器接收流量。

**使用控制台注册您的实例**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**目标实例**选项卡上，选择**管理实例**。

1. 在**管理实例**页面的**可用实例**表中，选择要注册到负载均衡器的实例。

1. 确保需要注册的实例已填充到**查看选定实例**表中。

1. 选择**保存更改**。

**要使用注册您的实例 AWS CLI**  
使用以下 [register-instances-with-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/register-instances-with-load-balancer.html) 命令：

```
aws elb register-instances-with-load-balancer --load-balancer-name my-loadbalancer --instances i-4e05f721
```

以下示例响应列出了已向负载均衡器注册的实例：

```
{
    "Instances": [
        {
            "InstanceId": "i-315b7e51"
        }, 
        {
            "InstanceId": "i-4e05f721"
        }
    ]
}
```

## 查看向负载均衡器注册的实例
<a name="elb-describe-load-balancer-instances"></a>

使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令列出在指定负载均衡器中注册的实例：

```
aws elb describe-load-balancers --load-balancer-names my-load-balancer --output text --query "LoadBalancerDescriptions[*].Instances[*].InstanceId"
```

下面是示例输出：

```
i-e905622e
i-315b7e51
i-4e05f721
```

## 确定已注册实例的负载均衡器
<a name="elb-describe-instance-load-balancer"></a>

使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令获取注册指定实例的负载均衡器的名称：

```
aws elb describe-load-balancers --output text --query "LoadBalancerDescriptions[?Instances[?InstanceId=='i-e905622e']].[LoadBalancerName]"
```

下面是示例输出：

```
my-load-balancer
```

## 注销实例
<a name="elb-deregister-instances"></a>

如果您不再需要容量，或者如果需要维护实例，可以从负载均衡器注销实例。

如果负载均衡器连接到某个 Auto Scaling 组，则从该组分离实例也会从负载均衡器将其注销。有关更多信息，请参阅 *Amazon Auto Scaling 用户指南中的将 EC2 实例从 Aut EC2 o Sc* [aling 组中分离](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-detach-attach-instances.html)出来。

**使用控制台注销您的实例**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**目标实例**选项卡上，选择**管理实例**。

1. 在**管理实例**页面的**可用实例**表中，取消选择该实例，以将其从负载均衡器取消注册。

1. 确保需要取消注册的实例未填充到**查看选定实例**表中。

1. 选择**保存更改**。

**要取消注册您的实例，请使用 AWS CLI**  
使用以下 [deregister-instances-from-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/deregister-instances-from-load-balancer.html) 命令：

```
aws elb deregister-instances-from-load-balancer --load-balancer-name my-loadbalancer --instances i-4e05f721
```

以下示例响应列出了向负载均衡器注册的其他实例：

```
{
    "Instances": [
        {
            "InstanceId": "i-315b7e51"
        }
    ]
}
```

# 对经典负载均衡器中的实例执行运行状况检查
<a name="elb-healthchecks"></a>

您的经典负载均衡器会定期向其注册实例发送请求以测试其状态。这些测试称为*运行状况检查*。在执行运行状况检查时，运行状况良好的实例的状态为 `InService`。在执行运行状况检查时，运行状况不佳的任何实例的状态为 `OutOfService`。负载均衡器会对所有已注册实例执行运行状况检查，无论实例处于运行状况良好状态还是不佳状态。

负载均衡器仅将请求路由到正常的实例。当负载均衡器确定某个实例不正常时，会停止将请求路由到该实例。当实例恢复正常状态时，负载均衡器将恢复向该实例路由请求。

负载均衡器使用 Elastic Load Balancing 提供的默认运行状况检查配置，或使用您配置的运行状况检查配置检查已注册实例的运行状况。

如果您已将 Auto Scaling 组与经典负载均衡器关联，则可以使用负载均衡器运行状况检查确定 Auto Scaling 组中的实例的运行状况。默认情况下，Auto Scaling 组会定期确定每个实例的运行状况。有关更多信息，请参阅 *Amazon Auto Scaling 用户指南中的将 Elastic Load Balancing 运行状况检查添加到您的 A EC2 uto Scaling* [群组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html)。

**Topics**
+ [运行状况检查配置](#health-check-configuration)
+ [更新运行状况检查配置](#update-health-check-config)
+ [检查实例的运行状况](#check-instance-health)
+ [根据运行状况检查进行故障排除](#troubleshoot-health-checks)

## 运行状况检查配置
<a name="health-check-configuration"></a>

运行状况配置包含负载均衡器用于确定已注册实例的运行状况的信息。下表介绍了运行状况检查配置字段。


| 字段 | 描述 | 
| --- | --- | 
|  协议  |  连接到实例所使用的协议。 有效值：`TCP`、`HTTP`、`HTTPS` 和 `SSL` 控制台默认值：`HTTP` CLI/API 默认值：`TCP`  | 
|  端口  |  用于以 `protocol:port` 对的形式连接实例的端口。如果负载均衡器在配置的响应超时期内未能在指定端口上与实例连接，则将实例视为运行状况不佳。 协议：`TCP`、`HTTP`、`HTTPS` 和 `SSL` 端口范围：1 至 65535 控制台默认值：`HTTP:80` CLI/API 默认值：`TCP:80`  | 
|  路径  |  HTTP 或 HTTPS 请求的目标。 在端口和路径上向实例发出 HTTP 或 HTTPS GET 请求。如果负载均衡器在响应超时期内收到“200 OK”之外的任何响应，则会将实例视为运行状况不佳。如果响应包括正文，则应用程序必须将 Content-Length 标头设置为大于等于零的值，或者指定其值设置为“chunked”的 Transfer-Encoding。 默认值：`/index.html`  | 
|  响应超时  |  接收来自运行状况检查的响应时要等待的时间 (秒)。 有效值：2 至 60 默认值：5  | 
|  HealthCheck 间隔  |  单个实例的运行状况检查之间的时间量 (秒)。 有效值：5 至 300 默认值：30  | 
|  不正常阈值  |  在宣布EC2 实例运行状况不佳之前必须连续失败的运行状况检查次数。 有效值：2 至 10 默认值：2  | 
|  正常阈值  |  在宣布EC2 实例运行正常之前必须连续成功进行运行状况检查的次数。 有效值：2 至 10 默认值：10  | 

负载均衡器使用指定的端口、协议和路径，每 `Interval` 秒向每个已注册的实例发送一次运行状况检查请求。每个运行状况检查请求都是独立的，并且在整个时间间隔内持续。等待实例响应所花费的时间不会影响下次运行状况检查的时间间隔。如果运行状况检查超过**UnhealthyThresholdCount**连续失败次数，则负载均衡器会使该实例停止服务。当运行状况检查超过**HealthyThresholdCount**连续成功率时，负载均衡器会将实例重新投入使用。

如果实例在 HTTP/HTTPS 运行状况检查间隔内返回 200 响应码，则运行状况检查成功。如果 TCP 连接成功，则 TCP 运行状况检查成功。如果 SSL 握手成功，则 SSL 运行状况检查成功。

## 更新运行状况检查配置
<a name="update-health-check-config"></a>

您可随时更新负载均衡器的运行状况检查配置。

**使用控制台更新负载均衡器的运行状况检查配置**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在 **Health checks** 选项卡上，选择 **Edit**。

1. 在**编辑运行状况检查设置**页面的**运行状况检查**下，根据需要更新配置。

1. 确定选择无误之后，选择**保存更改**。

**要更新负载均衡器的运行状况检查配置，请使用 AWS CLI**  
使用以下 [configure-health-check](https://docs.aws.amazon.com/cli/latest/reference/elb/configure-health-check.html) 命令：

```
aws elb configure-health-check --load-balancer-name my-load-balancer --health-check Target=HTTP:80/path,Interval=30,UnhealthyThreshold=2,HealthyThreshold=2,Timeout=3
```

## 检查实例的运行状况
<a name="check-instance-health"></a>

您可检查已注册实例的运行状况。

**使用控制台检查实例的运行状况**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**详细信息**部分中，**状态**将指示使用中的实例数量。

1. 在**目标实例**选项卡的**目标实例**表内，**运行状态**列将指示每个已注册实例的具体状态。

**要使用检查您的实例的运行状况 AWS CLI**  
使用以下 [describe-instance-health](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-instance-health.html) 命令：

```
aws elb describe-instance-health --load-balancer-name my-load-balancer
```

## 根据运行状况检查进行故障排除
<a name="troubleshoot-health-checks"></a>

已注册的实例可能因多种原因无法通过负载均衡器运行状况检查。运行状况检查失败的最常见原因是 EC2 实例关闭了与您的负载均衡器的连接，或者 EC2 实例的响应超时。有关失败的运行状况检查问题的可能原因以及您可以采取的解决问题的措施的信息，请参阅 [对经典负载均衡器进行故障排除：运行状况检查](ts-elb-healthcheck.md)。

# 经典负载均衡器的实例的安全组
<a name="elb-instances-security-groups"></a>

*安全组* 起到防火墙的作用，可控制允许往返于一个或多个实例的流量。启动 EC2 实例时，您可以将一个或多个安全组与该实例关联起来。对于每个安全组，添加一个或多个规则以允许流量。您可以随时修改某个安全组的规则；新规则会自动应用于与该安全组关联的所有实例。有关更多信息，请参阅《[亚马逊* EC2 用户指南》中的亚马逊 EC2 *安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)。

您的实例的安全组必须允许它们与负载均衡器进行通信。下表显示了推荐的入站规则。


| 来源 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
| *load balancer security group* | TCP | *instance listener* | 在实例侦听器端口上允许来自负载均衡器的流量 | 
| *load balancer security group* | TCP | *health check* | 在运行状况检查端口上允许来自负载均衡器的流量 | 

我们还建议您允许入站 ICMP 流量以支持路径 MTU 发现。有关更多信息，请参阅《*亚马逊 EC2 用户指南》*中的 [MTU 发现路径](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)。

# ACLs Classic Load Balancer 实例的网络
<a name="elb-instances-network-acls"></a>

*网络访问控制列表 (ACL) *在子网级别允许或拒绝特定的入站或出站流量。您可以使用 VPC 的默认网络 ACL，也可以为 VPC 创建自定义网络 ACL，使其规则与您安全组的规则相似，以便为您的 VPC 添加额外安全层。

VPC 的默认网络访问控制列表 (ACL) 允许所有入站和出站流量。如果您创建自定义网络 ACLs，则必须添加允许负载均衡器和实例通信的规则。

实例子网的推荐规则取决于子网是私有还是公有子网。以下规则适用于私有子网。如果您的实例在公有子网中，请将源和目标从 VPC 的 CIDR 更改为 `0.0.0.0/0`。

以下是推荐的入站规则。


| 来源 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
|  *VPC CIDR*  |  TCP  |  *instance listener*  |  在实例侦听器端口上允许来自 VPC CIDR 的入站流量  | 
|  *VPC CIDR*  |  TCP  |  *health check*  |  在运行状况检查端口上允许来自 VPC CIDR 的入站流量  | 

以下是推荐的出站规则。


| 目标位置 | 协议 | 端口范围 | Comment | 
| --- | --- | --- | --- | 
|  *VPC CIDR*  |  TCP  |  1024-65535  |  在临时端口上允许流向 VPC CIDR 的出站流量  | 