

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

# 迁移您的经典负载均衡器
<a name="migrate-classic-load-balancer"></a>

Elastic Load Balancing 支持以下类型的负载均衡器：应用程序负载均衡器、网络负载均衡器、网关负载均衡器和经典负载均衡器。要了解每种负载均衡器类型的不同功能，请参阅[弹性负载均衡产品对比](https://aws.amazon.com/elasticloadbalancing/features/)。

您还可以选择将 VPC 中的现有经典负载均衡器迁移到应用程序负载均衡器或网络负载均衡器。

## 从经典负载均衡器迁移的好处
<a name="migration-benefits"></a>

每种类型的负载均衡器都有其独特的特性、功能和配置。查看每种负载均衡器的优点，以帮助决定哪一种最适合您。

------
#### [ Application Load Balancer ]

**使用应用程序负载均衡器而不是经典负载均衡器具有以下好处：**

支持：
+ [路径条件](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#path-conditions)、[主机条件](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#host-conditions)和 [HTTP 标头条件](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#http-header-conditions)。
+ 将请求从一个 URL 重定向到另一个 URL，并将请求路由到单个 EC2 实例上的多个应用程序。
+ 返回自定义 HTTP 响应。
+ 通过 IP 地址注册目标，并将 Lambda 函数注册为目标。包括位于负载均衡器的 VPC 之外的目标。
+ 通过企业或社交身份对用户进行身份验证。
+ Amazon Elastic Container Service（Amazon ECS）容器化应用程序。
+ 独立监控每个服务的运行状况。

访问日志包含附加信息，并以压缩格式存储。

整体提高了负载均衡器的性能。

------
#### [ Network Load Balancer ]

**使用网络负载均衡器而不是经典负载均衡器具有以下好处：**

支持：
+ 静态 IP 地址，允许为负载均衡器启用的每个子网分配一个弹性 IP 地址。
+ 通过 IP 地址注册目标，包括位于负载均衡器的 VPC 之外的目标。
+ 将请求路由到单个 EC2 实例上的多个应用程序。
+ Amazon Elastic Container Service（Amazon ECS）容器化应用程序。
+ 独立监控每个服务的运行状况。

可以处理急剧波动的工作负载，并可以扩展到每秒处理数百万个请求。

------

## 使用迁移向导进行迁移
<a name="migration-wizard"></a>

迁移向导使用经典负载均衡器的配置来创建等效的应用程序负载均衡器或网络负载均衡器。与其他方法相比，它减少了迁移经典负载均衡器所需的时间和精力。

**注意**  
该向导会创建一个新的负载均衡器。该向导不会将现有的经典负载均衡器转换为应用程序负载均衡器或网络负载均衡器。您必须手动将流量重定向到新创建的负载均衡器。

**限制**
+ 新负载均衡器名称不能与同一区域内同类型的现有负载均衡器相同。
+ 如果经典负载均衡器的任何标签的键中包含 `aws:` 前缀，则不会迁移这些标签。

**迁移到应用程序负载均衡器时**
+ 如果经典负载均衡器只有一个子网，则必须指定第二个子网。
+ 如果 Classic Load Balancer 的 HTTP/HTTPS 侦听器使用 TCP 运行状况检查，则运行状况检查协议将更新为 HTTP，并将路径设置为 “/”。
+ 如果经典负载均衡器的 HTTPS 侦听器使用自定义或不受支持的安全策略，则迁移向导将使用新负载均衡器类型的默认安全策略。

**迁移到网络负载均衡器时**
+ 以下实例类型将不会注册到新的目标组：C1、、、、、、、 CC1、 CC2、G1 CG1 CG2 CR1、G2 CS1、、、、M1、M2 HI1 HS1、M3、T1
+ 经典负载均衡器中的某些运行状况检查设置可能无法转移到新的目标组。这些案例将在迁移向导的摘要部分中显示为更改。
+ 如果经典负载均衡器具有 SSL 侦听器，则迁移向导将使用来自 SSL 侦听器的证书和安全策略创建 TLS 侦听器。

### 迁移向导过程
<a name="migration-wizard-process"></a>

**使用迁移向导迁移经典负载均衡器**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

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

1. 选择要迁移的经典负载均衡器。

1. 在负载均衡器的**详细信息**部分，选择**启动迁移向导**。

1. 选择**迁移到应用程序负载均衡器**或**迁移到网络负载均衡器**以打开迁移向导。

1. 在**命名新的负载均衡器**下，对于**负载均衡器名称**，输入新负载均衡器的名称。

1. 在**命名新的目标组并查看目标**下，对于**目标组名称**，输入新目标组的名称。

1. （可选）在**目标**下，您可以查看将在新目标组中注册的目标实例。

1. （可选）在**查看标签**下，您可以查看将应用于新负载均衡器的标签

1. 在**应用程序负载均衡器的摘要**或**网络负载均衡器的摘要**下，查看并验证迁移向导分配的配置选项。

1. 对配置摘要满意后，选择**创建应用程序负载均衡器**或**创建网络负载均衡器**以开始迁移。

## 使用负载均衡器复制实用程序进行迁移
<a name="load-balancer-copy-utility"></a>

该 AWS GitHub 页面上的 Elastic Load Balancing Tools 存储库中提供了负载均衡器复制工具。

**资源**
+ [Elastic Load Balancing 工具](https://github.com/aws/elastic-load-balancing-tools)
+ [经典负载均衡器到应用程序负载均衡器复制实用程序](https://github.com/aws/elastic-load-balancing-tools/tree/master/application-load-balancer-copy-utility)
+ [经典负载均衡器到网络负载均衡器复制实用程序](https://github.com/aws/elastic-load-balancing-tools/tree/master/network-load-balancer-copy-utility)

## 手动迁移负载均衡器
<a name="manual-migration"></a>

以下信息提供了基于 VPC 中的现有经典负载均衡器手动创建新的 Application Load Balancer 或 Network Load Balancer 的常规说明。您可以使用 AWS 管理控制台 AWS CLI、或 AWS SDK 进行迁移。有关更多信息，请参阅 [Elastic Load Balancing 入门](load-balancer-getting-started.md)。

在迁移过程完成后，您就可以利用新负载均衡器的功能了。

### 手动迁移过程
<a name="manual-migration-process"></a>

**步骤 1：创建新负载均衡器**  
创建配置等效于经典负载均衡器的负载均衡器以进行迁移。

1. 创建具有与经典负载均衡器相同的模式（面向 Internet 或内部）、子网和安全组的新负载均衡器。

1. 使用与经典负载均衡器相同的运行状况检查设置为负载均衡器创建一个目标组。

1. 请执行下列操作之一：
   + 如果您的经典负载均衡器已附加到 Auto Scaling 组，请将目标组附加到 Auto Scaling 组。这样还可以向目标组注册 Auto Scaling 实例。
   + 向目标组注册您的 EC2 实例。

1. 创建一个或多个侦听器，每个都具有将请求转发到目标组的默认规则。如果创建 HTTPS 侦听器，则可指定您为经典负载均衡器所指定的同一证书。建议您使用默认安全策略。

1. 如果您的经典负载均衡器具有标签，请进行检查并将相关标签添加到新负载均衡器。

**步骤 2：逐步将流量重定向到您的新负载均衡器**  
在向新负载均衡器注册您的实例后，您可以开始将流量从旧负载均衡器重定向到新负载均衡器的过程。这使您能够测试新的负载均衡器，同时将应用程序可用性风险降至最低。

**逐步将流量重定向到您的新负载均衡器**

1. 将新负载均衡器的 DNS 名称粘贴到已连接 Internet 的 Web 浏览器的地址栏中。如果一切正常，浏览器会显示您应用程序的默认页面。

1. 创建一个用于将域名与您的新负载均衡器关联的新 DNS 记录。如果您的 DNS 服务支持权重，则在新 DNS 记录中指定权重为 1；对于您的旧负载均衡器的现有 DNS 记录，指定权重为 9。这样可以将 10% 的流量定向到新负载均衡器，而将 90% 的流量定向到旧负载均衡器。

1. 监控您的新负载均衡器，验证它能否接收流量并将请求路由到您的实例。
**重要**  
DNS 记录中的 time-to-live (TTL) 为 60 秒。这意味着，解析域名的任何 DNS 服务器在其缓存中保留记录信息的时间为 60 秒，同时更改会传播。因此，在您完成上一步后，这些 DNS 服务器仍然可以在 60 秒内将流量路由到旧负载均衡器。在传输过程中，流量可以定向到任一负载均衡器。

1. 继续更新您的 DNS 记录的权重，直到所有流量都定向到您的新负载均衡器。完成后，您可以删除旧负载均衡器的 DNS 记录。

**步骤 3：更新策略、脚本和代码**  
如果要将经典负载均衡器迁移到 Application Load Balancer 或 Network Load Balancer，请务必执行以下操作：
+ 将使用 API 版本 2012-06-01 的 IAM 策略更新为使用版本 2015-12-01。
+ 更新使用`AWS/ELB`命名空间中 CloudWatch 指标的进程，以使用`AWS/ApplicationELB`或`AWS/NetworkELB`命名空间中的指标。
+ 更新使用命令来使用**aws elb** AWS CLI 命令的脚本。**aws elbv2** AWS CLI 
+ 更新使用`AWS::ElasticLoadBalancing::LoadBalancer`资源来使用`AWS::ElasticLoadBalancingV2`资源的 CloudFormation 模板。
+ 将使用 Elastic Load Balancing API 版本 2012-06-01 的代码更新为使用版本 2015-12-01。

**资源**
+ *AWS CLI 命令参考*中的 [elbv2](https://docs.aws.amazon.com/cli/latest/reference/elbv2/index.html)
+ [Elastic Load Balancing API 参考（2015 年 12 月 1 日版）](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/)
+ [适用于 Elastic Load Balancing 的 Identity and Access Management](load-balancer-authentication-access-control.md)
+ *Application Load Balancer 用户指南*中的 [Application Load Balancer 指标](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html#load-balancer-metrics-alb)
+ *Network Load Balancer 用户指南*中的 [Network Load Balancer 指标](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html#load-balancer-metrics-nlb)
+ 《AWS CloudFormation 用户指南》**中的 [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html)

**步骤 4：删除旧负载均衡器**  
您可以在完成以下步骤后删除旧经典负载均衡器：
+ 您已将旧负载均衡器的所有流量重定向到新负载均衡器。
+ 已完成路由到旧负载均衡器的所有现有请求。

## 阻止用户创建经典负载均衡器
<a name="require-elbv2-load-balancers"></a>

您可以创建 IAM 策略来阻止用户在您的账户中创建经典负载均衡器。

[Elastic Load Balancing V2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awselasticloadbalancingv2.html) 和 [Elastic Load Balancing V1](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awselasticloadbalancing.html) 都 APIs 提供了 `CreateLoadBalancer` API 操作。创建经典负载均衡器时，您将使用 V1 API 操作，这会同时创建负载均衡器和侦听器。创建应用程序负载均衡器、网络负载均衡器或网关负载均衡器时，您将使用 V2 API 操作。V2 API 提供了一个 `CreateListener` 操作，用来在创建负载均衡器之后为其创建侦听器。

如果指定了侦听器协议，则以下策略将拒绝用户创建负载均衡器的权限。由于在创建经典负载均衡器时必须至少配置一个侦听器，因此此策略会阻止用户创建经典负载均衡器。但不会阻止用户创建其他类型的负载均衡器，因为这些负载均衡器及其侦听器的创建会使用单独的 API 操作。

```
{
    "Version": "2012-10-17",		 	 	 
    "Effect": "Deny",
    "Action": "elasticloadbalancing:CreateLoadBalancer",
    "Resource": [
        "arn:aws:elasticloadbalancing:*:*:loadbalancer/*"
    ],
    "Condition": {
        "Null": {
            "elasticloadbalancing:ListenerProtocol": false
        }
    }
}
```