将 CodeDeploy 与 Elastic Load Balancing - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

将 CodeDeploy 与 Elastic Load Balancing

在 CodeDeploy 部署期间,负载均衡器会阻止 Internet 流量路由到未就绪的实例,目前正在部署的实例,或环境不再需要的实例。但是,负载均衡器的具体作用取决于它是用于蓝/绿部署还是就地部署。

注意

Elastic Load Balancing 负载均衡器的使用在蓝/绿部署中为必需,在就地部署中为可选。

Elastic Load Balancing 类型

Elastic Load Balancing 提供了三种类型的负载均衡器可用于 CodeDeploy 部署:经典负载均衡器、应用程序负载均衡器和网络负载均衡器。

传统负载均衡器

路由和负载均衡在传输层 (TCP/SSL) 或应用程序层 (HTTP/HTTPS) 进行。它支持 EC2-Classic 或 VPC。

应用程序负载均衡器

路由和负载均衡在应用程序层 (HTTP/HTTPS) 进行,并支持基于路径的路由。它可以将请求路由到您的 Virtual Private Cloud (VPC) 中每个 EC2 实例或容器实例上的端口。

注意

应用程序负载均衡器目标组必须有一个目标类型:instance用于 EC2 实例上的部署,以及IP用于 Fargate 部署。有关更多信息,请参阅 。Target type.

网络负载均衡器

路由和负载均衡在传输层 (TCP/UDP 层,即第 4 层) 进行,依据是从 TCP 数据包标头中而非从数据包内容中提取的地址信息。网络负载均衡器可以处理突发流量、保留客户端的源 IP 以及在负载均衡器的使用寿命内使用固定 IP。

要了解有关 Elastic Load Balancing 负载均衡器的更多信息,请参阅以下主题:

蓝/绿部署

在 Elastic Load Balancing 负载均衡器之后重新路由实例流量是 CodeDeploy 蓝/绿部署的基础。

在蓝/绿部署期间,负载均衡器根据您指定的规则,允许将流量路由到已部署最新应用程序修订的部署组中的新实例 (替换环境),然后阻止运行较早应用程序修订的旧实例的流量 (原始环境)。

替换环境中的实例注册负载均衡器后,将取消注册原始环境中的实例,并根据您的需要终止。

对于蓝/绿部署,您可以在部署组中指定 Classic Load Balancer 器、应用程序负载均衡器或 Network Load Balancer。您可以使用 CodeDeploy 控制台或Amazon CLI将负载均衡器添加到部署组。

有关在蓝/绿部署中使用负载均衡器的更多信息,请参阅以下主题:

就地部署

在就地部署的过程中,负载均衡器可以防止 Internet 流量路由到要部署的实例;实例部署完成后,可恢复对该实例的流量路由。

如果就地部署期间未使用负载均衡器,Internet 流量在部署过程中可能仍会引向该实例。因此,您的客户可能会遇到中断、不完整或过时的 Web 应用程序。在将 Elastic 负载均衡器用于就地部署时,部署组中的实例将从负载均衡器取消注册,更新为最新的应用程序修订,并在部署完成后向负载均衡器重新注册同一部署组。已成功。CodeDeploy 将等待长达 1 个小时,以使实例在负载均衡器后面保持运行状态。如果在等待期间,负载均衡器未将实例标记为运行状况良好,则根据部署配置,CodeDeploy 将移动到下一个实例或部署失败。

对于就地部署,可以指定 Classic Load Balancer、Application Load Balancer 或 Network Load Balancer。您可以在配置部署组的过程中指定负载均衡器,或使用 CodeDeploy 提供的脚本实施负载均衡器。

使用部署组指定就地部署负载均衡器

要将负载均衡器添加到部署组,请使用 CodeDeploy 控制台或Amazon CLI. 有关就地部署期间在部署组中指定负载均衡器的信息,请参阅以下主题:

使用脚本指定就地部署负载均衡器

通过执行以下过程中的步骤,使用部署生命周期脚本为就地部署设置负载均衡。

注意

您应该仅在使用脚本为就地部署设置负载均衡器时使用 CodeDeployDefault.OneAtATime 部署配置。不支持并发运行,并且 CodeDeployDefault.OneAtATime 设置可确保脚本的顺序执行。有关部署配置的更多信息,请参阅在 CodeDeploy 中使用部署配置

在 GitHub 上的 CodeDeploy 示例存储库中,我们提供了说明和示例,您可进行调整以使用 CodeDeploy Elastic Load Balancing ad Balancer。这些存储库包括三个示例脚本 —register_with_elb.shderegister_from_elb.sh, 和common_functions.sh— 提供了开始操作所需的全部代码。只需编辑这 3 个脚本中的占位符,然后从 appspec.yml 文件中引用这些脚本。

要使用已注册到 Elastic Load Balancing 负载均衡器的 Amazon EC2 实例在 CodeDeploy 中设置就地部署,请执行以下操作:

  1. 下载要用于就地部署的负载均衡器的类型的示例:

  2. 请确保每个目标 Amazon EC2 实例均具有Amazon CLI已安装。

  3. 请确保您的每个目标 Amazon EC2 实例均已附加至少一个 IAM 实例配置文件,并且具有 elasticload Balancing: * 和 autoscaling: * 权限。

  4. 将部署生命周期事件脚本 (register_with_elb.shderegister_from_elb.shcommon_functions.sh) 包含在应用程序的源代码目录中。

  5. appspec.yml对于应用程序修订版,请提供 CodeDeploy 运行register_with_elb.shApplicationStart事件和deregister_from_elb.shApplicationStopevent.

  6. 如果实例属于 Amazon EC2 Auto Scaling 组,则可跳过此步骤。

    common_functions.sh 脚本中:

    • 如果您使用传统负载均衡器中指定 Elastic Load Balancing 负载均衡器的名称ELB_LIST="",并对文件中的其他部署设置进行所需的任何更改。

    • 如果您使用应用程序负载均衡器或 Network Load Balancer中,指定中的 Elastic Load Balancing 目标组名称的名称TARGET_GROUP_LIST="",并对文件中的其他部署设置进行所需的任何更改。

  7. 将应用程序的源代码、appspec.yml 和部署生命周期事件脚本绑定到一个应用程序修订中,然后上传该修订。将该修订部署到 Amazon EC2 实例。在部署期间,部署生命周期事件脚本将向负载均衡器取消注册 Amazon EC2 实例,等待连接耗尽,然后在部署完成后向负载均衡器重新注册 Amazon EC2 实例。