迁移概览

本页面简要介绍了全球外部应用负载均衡器和传统应用负载均衡器之间的差异,并详细介绍了如何将现有的传统应用负载均衡器资源迁移到全球外部应用负载均衡器。

为了充分利用全球外部应用负载均衡器的高级流量管理功能,我们建议您将传统应用负载均衡器资源迁移到全球外部应用负载均衡器基础设施。

比较传统应用负载均衡器和全球外部应用负载均衡器

在迁移资源之前,先了解传统应用负载均衡器和全球外部应用负载均衡器之间的差异。

功能差异

全局外部应用负载均衡器不支持以下功能。它们仅适用于传统应用负载均衡器:

数据平面差异

下表重点说明了传统应用负载均衡器和全球外部应用负载均衡器在数据平面方面的差异。这些差异会影响负载均衡器响应一些常见事件的方式。

活动 传统应用负载均衡器响应 全球外部应用负载均衡器响应
状态/错误代码
所有后端的健康状况都不佳 返回 HTTP 502 返回 HTTP 503
请求使用被禁止的 SSL 加密 返回 HTTP 502 返回 HTTP 503
后端重置上行连接过早 返回 HTTP 502 返回 HTTP 503
连接升级失败(例如,升级到 Websocket 时) 返回 HTTP 400 返回 HTTP 403
标头过大 返回 HTTP 413 返回 HTTP 431
配额和限制
网址映射配置 两个负载均衡器之间的网址映射配置限制存在明显差异。如需了解详情,请参阅《配额:网址映射》文档。
标头处理
请求使用无正文的自定义 HTTP 方法 为发送到后端的请求添加 Transfer Encoding: Chunked 标头 为发送到后端的请求添加 Content-Length: 0 标头
为发送到后端的请求添加的 X-Forwarded-For 标头的格式 在 IP 之间使用“, ”分隔符 在 IP 之间使用“,”分隔符(英文逗号后面没有空格)
标头大小写保留 标头大小写会保留 所有标头键都会转换为小写
名称相同的重复标头 允许 重复标头可以合并为一个标头,并按顺序附加值,以英文逗号分隔,如 RFC 7230 所允许的那样。
(仅限 HTTP/1.1)无效的标头名称(例如,标头中不受支持的字符) 允许(对于 HTTP/1.1) 返回 HTTP 502(对于 HTTP/1.1)
(仅限 HTTP/1.1)请求中重复(但相同)的 Content-Length 标头 允许(对于 HTTP/1.1) 返回 HTTP 502(对于 HTTP/1.1)
(仅限 HTTP/1.1)标头中的多个主机 如果添加了两个或更多主机,并且第一个主机有效,则系统会接受标头 如果添加了两个或更多主机,并且有任何主机无效,则负载均衡器会返回 HTTP 502
(仅限 HTTP/1.1)Connection: Keep-Alive 标头 默认情况下在发送到后端的请求中添加 Keep-Alive header 默认情况下不添加此标头
请求处理
请求中的反斜杠 网址保持不变 转换为正斜杠
合并请求中重复的斜杠 不合并斜杠 合并斜杠
请求路径中的“#” 允许 返回 HTTP 400
(仅限 HTTP/1.1)请求路径中不符合规定的字符(例如“\\x7f\\x7f”) 允许(对于 HTTP/1.1) 返回 HTTP 502(对于 HTTP/1.1)
流量分配(网址映射配置)
客户端请求包含端口号 即使您在网址映射中为主机配置了端口,系统也会忽略端口号;而只会考虑主机名。例如,example.com:5000 的请求会与 example.com 的后端服务进行匹配。 系统会同时考虑主机名和端口号。例如,example.com:5000 的请求会与 example.com:5000 的后端服务进行匹配。如果没有匹配项,则系统会使用默认后端服务。

如需详细了解这些差异和支持的功能,请参阅负载均衡器功能比较应用负载均衡器概览

从传统应用负载均衡器迁移到全球外部应用负载均衡器

如需迁移到全球外部应用负载均衡器,您需要将负载均衡资源的负载均衡方案(具体而言,是后端服务和转发规则)从 EXTERNAL 更改为 EXTERNAL_MANAGED。为此,请执行一系列迁移步骤,以便在实际完成迁移之前,使用新的负载均衡方案测试部分网络流量。在资源迁移期间,您可以控制将多大比例的请求发送到传统应用负载均衡器基础设施或全球外部应用负载均衡器基础设施。

下图显示了迁移前后负载均衡资源的负载均衡方案。

传统应用负载均衡器资源的迁移流程。
经典应用负载平衡器资源的迁移流程(点击可放大)。

在上一个图表中,请注意以下事项:

  • 在迁移资源之前,所有请求都使用传统应用负载均衡器基础设施。
  • 在迁移资源时,部分请求会发送到全球外部应用负载均衡器基础设施,其余请求会发送到传统应用负载均衡器基础设施。
  • 迁移资源后,所有请求都将使用全球外部应用负载均衡器基础设施。

为确保顺利过渡,请按指定顺序迁移以下传统应用负载均衡器资源:

  1. 迁移附加到负载均衡器转发规则的所有后端服务。

  2. 迁移附加到负载均衡器的转发规则的所有后端存储桶。您需要在转发规则级执行此操作,因为后端存储桶没有负载均衡方案。

  3. 迁移负载均衡器的转发规则。

    只有在附加到转发规则的所有后端服务和后端存储桶都已迁移后,您才能迁移转发规则。

迁移状态

您可以通过将资源设置为不同状态来迁移资源,然后再将其负载均衡方案更改为 EXTERNAL_MANAGED

  1. PREPARE:将资源设置为此状态,以便为迁移做好准备。
  2. TEST_BY_PERCENTAGE:如需测试准备好的资源,请将资源设置为此状态,以发送一定比例的网络流量。此阶段是可选的。
  3. TEST_ALL_TRAFFIC:将资源设置为此状态,以通过全球外部应用负载均衡器基础设施(而非传统应用负载均衡器基础设施)将所有网络流量发送到该资源。

迁移过程

为尽可能确保无停机时间,请按特定顺序将资源从传统应用负载均衡器基础设施迁移到全球外部应用负载均衡器基础设施,然后将负载均衡方案从 EXTERNAL 更改为 EXTERNAL_MANAGED,以完成迁移。

  1. 迁移负载均衡器的后端服务。

    对每个后端服务重复以下步骤。

    1. 为后端服务做好迁移准备。

      在通过全球外部应用负载均衡器基础设施发送任何流量之前,将后端服务的状态设置为 PREPARE。这可准备后端服务,以处理全球外部应用负载均衡器基础设施网络流量。后端服务需要一段时间(大约 6 分钟),才能准备好通过全球外部应用负载均衡器基础设施发送流量。

    2. 可选:测试准备好的后端服务。

      后端服务处于 PREPARE 状态后,将其状态设置为 TEST_BY_PERCENTAGE,并将传统应用负载均衡器网络流量的百分比设置为全球外部应用负载均衡器基础设施。

      虽然此阶段是可选的,但我们建议您在迁移后端服务之前测试流量。首先设置一个较小的百分比值,然后监控资源的日志。如果后端服务的行为符合预期,请逐步将百分比提高到 100%。

      TEST_BY_PERCENTAGE 状态下,您无法使用全球外部应用负载均衡器基础设施的其他功能。

    3. 将所有传统应用负载均衡器网络流量发送到准备好的后端服务。

      成功测试后端服务后,将其状态设置为 TEST_ALL_TRAFFIC,并将所有传统应用负载均衡器网络流量发送到准备好的后端服务。后端服务需要一段时间(大约 6 分钟),才能准备好处理网络流量。

      TEST_ALL_TRAFFIC 状态下,您无法使用全球外部应用负载均衡器基础设施的其他功能。

    4. 将已迁移的后端服务的负载均衡方案更改为 EXTERNAL_MANAGED

      在全球外部应用负载均衡器基础设施上测试准备好的后端服务后,将其负载均衡方案更改为 EXTERNAL_MANAGED。后端服务需要一段时间(大约 6 分钟),才能完全迁移。将后端服务的负载均衡方案更改为 EXTERNAL_MANAGED 后,您可以使用全球外部应用负载均衡器基础设施的高级功能。

  2. 迁移负载均衡器的后端存储桶。您需要在转发规则级执行此操作,因为后端存储桶没有负载均衡方案。

    对每个存储桶重复以下步骤。

    1. 为后端存储桶做好迁移准备。

      在通过全球外部应用负载均衡器基础设施发送任何流量之前,将后端存储桶的状态设置为 PREPARE,并等待一段时间(大约 6 分钟)。

    2. 可选:测试准备好的后端服务。

      后端存储桶处于 PREPARE 状态后,将其状态设置为 TEST_BY_PERCENTAGE,并将传统应用负载均衡器网络流量的百分比设置为全球外部应用负载均衡器基础设施。

    3. 将所有传统应用负载均衡器网络流量发送到准备好的后端存储桶。

      将后端存储桶的状态设置为 TEST_ALL_TRAFFIC,并将所有传统应用负载均衡器网络流量发送到该存储桶。后端存储桶需要一段时间(大约 6 分钟),才能准备好处理网络流量。

      TEST_ALL_TRAFFIC 状态下,您无法使用全球外部应用负载均衡器基础设施的其他功能。

  3. 迁移转发规则。

    针对每条转发规则,将转发规则的负载均衡方案更改为 EXTERNAL_MANAGED,然后等待一段时间(大约 6 分钟)。将转发规则的负载均衡方案更改为 EXTERNAL_MANAGED 后,您可以使用全球外部应用负载均衡器基础设施的高级功能。

如需了解详细的分步流程,请参阅从传统应用负载均衡器迁移资源

下图展示了处于不同迁移状态的传统应用负载均衡器资源。

传统应用负载均衡器资源的迁移状态。
经典应用负载平衡器资源的迁移状态(点击可放大)。

迁移资源后,如果您想将其回滚到传统应用负载均衡器,请在迁移后的 90 天内更改其负载均衡方案。90 天期限过后,您将无法回滚资源。

使用会话亲和性

迁移具有会话亲和性的传统应用负载均衡器后端服务时,请注意以下事项:

  • TEST_BY_PERCENTAGE 设置值会将部分以传统应用负载均衡器为目标的流量重定向到全球外部应用负载均衡器。这会破坏客户端 IP 亲和性。更改迁移百分比(例如,将其增加 10%)会破坏相同百分比的客户端 IP 地址(在本例中为 10%)的会话亲和性,直到在下一个请求中重新建立亲和性。

  • TEST_BY_PERCENTAGE 设置值会将没有会话 Cookie 的相应百分比的流量重定向到全球外部应用负载均衡器。还会将所有带有会话 Cookie 的流量重定向到生成该 Cookie 的负载均衡器舰队。

  • TEST_BY_PERCENTAGE 的值设置为 0%,或将其保持为未设置状态,或将后端服务设置为 PREPARE 状态,都会使定向到全球外部应用负载均衡器的所有现有 Cookie 失效。

  • 将后端服务的负载均衡方案更改为 EXTERNAL_MANAGED 会使传统应用负载均衡器舰队生成的所有 Cookie 失效。这样一来,如果使用全球外部应用负载均衡器的应用出现问题,您就可以回滚流量。例如,如果客户端提供来自传统应用负载均衡器舰队的 Cookie,但后端服务方案为 EXTERNAL_MANAGED,则系统不会采用客户端的 Cookie。全球外部应用负载均衡器会忽略该 Cookie 并创建一个新 Cookie。

回滚已迁移的资源

迁移资源后,如果您想将其从全球外部应用负载均衡器基础设施回滚到传统应用负载均衡器基础设施,则可以在更改其负载均衡方案后的 90 天内执行此操作。

将后端服务回滚到 EXTERNAL 方案需要回滚转发规则。将转发规则回滚到 EXTERNAL 方案不需要回滚后端服务。

如需回滚资源,请按照以下步骤操作:

  1. 移除在资源上配置的全球外部应用负载均衡器的所有新的高级流量管理功能。
  2. 回滚转发规则。

    将转发规则的负载均衡方案从 EXTERNAL_MANAGED 更改为 EXTERNAL

  3. 回滚后端存储桶。

    1. 将后端存储桶的迁移状态设置为 TEST_ALL_TRAFFIC,然后等待一段时间(大约 6 分钟)。
    2. 可选:如需减少流量,请将后端存储桶的迁移状态设置为 TEST_BY_PERCENTAGE 并设置流量百分比。
    3. 将后端存储桶的迁移状态设置为 PREPARE
    4. 将后端存储桶恢复到迁移前状态。
  4. 回滚后端服务。

    1. 将后端服务的迁移状态设置为 TEST_ALL_TRAFFIC,然后等待一段时间(大约 6 分钟)。
    2. 可选:如需减少流量,请将后端服务的迁移状态设置为 TEST_BY_PERCENTAGE 并设置流量百分比。
    3. 将后端服务的迁移状态设置为 PREPARE
    4. 将后端服务恢复为迁移前状态。

如需了解详细的分步流程,请参阅将已迁移的资源回滚到传统应用负载均衡器

跟踪迁移流程

迁移资源时,您可以通过查看以下内容来检查其负载均衡方案:

  • 全球外部应用负载平衡器的日志记录和监控信息中心。如需了解详情,请参阅全球外部应用负载均衡器日志记录和监控

  • 以下 HTTP 请求和响应标头的值:

    • X-External-Managed-Migration-Scheme-Override:此请求标头会根据其值来路由请求。如果标头值为 EXTERNAL,则将请求定向到传统应用负载均衡器基础设施。如果值为 EXTERNAL_MANAGED,则通过全球外部应用负载均衡器基础设施路由请求。

      使用此标头将请求定向到特定的负载均衡器舰队。

    • X-External-Managed-Migration-Selected-Scheme:此请求和响应标头会告知后端和客户端用于路由请求的负载均衡方案。标头会返回给客户端并传递给客户的后端。

      如果请求通过传统应用负载均衡器基础设施进行路由,则其值为 EXTERNAL。如果请求通过全球外部应用负载均衡器基础设施进行路由,则其值为 EXTERNAL_MANAGED

后续步骤