本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CodeDeploy 与 Elastic Load Balancing 集成
在 CodeDeploy 部署期间,负载均衡器会阻止 Internet 流量路由到未就绪的实例,目前正在部署的实例,或环境不再需要的实例。但是,负载均衡器的具体作用取决于它是用于蓝/绿部署还是就地部署。
Elastic Load Balancing 负载均衡器的使用在蓝/绿部署中为必需,在就地部署中为可选。
Elastic Load Balancing 类型
Elastic Load Balancing 提供了三种可用于 CodeDeploy 部署的负载均衡器:网络负载均衡器、应用程序负载均衡器和网络负载均衡器。
- Classic Load Balancer
-
路由和负载均衡在传输层 (TCP/SSL) 或应用程序层 (HTTP/HTTPS) 进行。它支持 EC2-Classic 或 VPC。
- Application Load Balancer
-
路由和负载均衡在应用程序层 (HTTP/HTTPS) 进行,并支持基于路径的路由。它可以将请求路由到您的 Virtual Private Cloud (VPC) 中每个 EC2 实例或容器实例上的端口。
注意 应用程序负载均衡器目标组必须有一个目标类型:
instance
用于 EC2 实例上的部署,以及IP
用于 Fargate 部署。有关更多信息,请参阅 。Target type. - Network Load Balancer
-
路由和负载均衡在传输层 (TCP/UDP 层,即第 4 层) 进行,依据是从 TCP 数据包标头中而非从数据包内容中提取的地址信息。网络负载均衡器可以处理突发流量,保留客户端的源 IP,并在负载均衡器的使用寿命内使用固定 IP。
要了解有关 Elastic Load Balancing 负载均衡器的更多信息,请参阅以下主题:
蓝/绿部署
Elastic Load Balancing 负载均衡器来重新路由实例流量是 CodeDeploy 蓝/绿部署的基础。
在蓝/绿部署期间,负载均衡器根据您指定的规则,允许将流量路由到已部署最新应用程序修订的部署组中的新实例 (替换环境),然后阻止运行较早应用程序修订的旧实例的流量 (原始环境)。
替换环境中的实例注册负载均衡器后,将取消注册原始环境中的实例,并根据您的需要终止。
对于蓝/绿部署,您可以在部署组中指定 Classic Load Balancer 器、应用程序负载均衡器或 Network Load Balancer。您可以使用 CodeDeploy 控制台或AWS CLI将负载均衡器添加到部署组。
有关在蓝/绿部署中使用负载均衡器的更多信息,请参阅以下主题:
就地部署
在就地部署的过程中,负载均衡器可以防止 Internet 流量路由到要部署的实例;实例部署完成后,可恢复对该实例的流量路由。
如果就地部署期间未使用负载均衡器,Internet 流量在部署过程中可能仍会引向该实例。因此,您的客户可能会遇到中断、不完整或过时的 Web 应用程序。在将 Elastic Load Balancing 负载均衡器用于就地部署时,部署组中的实例将从负载均衡器取消注册,更新为最新的应用程序修订,并在部署后向负载均衡器重新注册同一部署组。已成功。CodeDeploy 将等待长达 1 个小时,以便实例在负载均衡器后面变得正常运行。如果在等待期间,负载均衡器未将实例标记为运行状况良好,将根据部 CodeDeploy 配置移动到下一个实例或部署失败。
对于就地部署,您可以指定 Classic Load Balancer、Application Load Balancer 或 Network Load Balancer。您可以在配置部署组的过程中指定负载均衡器,或使用 CodeDeploy 提供的脚本实施负载均衡器。
使用部署组指定就地部署负载均衡器
要将负载均衡器添加到部署组,请使用 CodeDeploy 控制台或AWS CLI. 有关就地部署期间在部署组中指定负载均衡器的信息,请参阅以下主题:
使用脚本指定就地部署负载均衡器
通过执行以下过程中的步骤,使用部署生命周期脚本为就地部署设置负载均衡。
您应该仅在使用脚本为就地部署设置负载均衡器时使用 CodeDeployDefault.OneAtATime 部署配置。不支持并发运行,并且 CodeDeployDefault.OneAtATime 设置可确保脚本的顺序执行。有关部署配置的更多信息,请参阅在 CodeDeploy 中使用部署配置。
在 GitHub 上的 CodeDeploy 示例存储库中,我们提供了说明和示例,您可进行调整以使用 CodeDeploy Elastic Load Balancing 负载均衡 这些存储库包括三个示例脚本 —register_with_elb.sh
、deregister_from_elb.sh
, 和common_functions.sh
— 提供了开始操作所需的全部代码。只需编辑这 3 个脚本中的占位符,然后从 appspec.yml
文件中引用这些脚本。
要使用已注册到 Elastic Load Balancing 负载均衡器的 Amazon EC2 实例设置就地 CodeDeploy,请执行以下操作:
-
下载要用于就地部署的负载均衡器的类型的示例:
-
确保每个目标 Amazon EC2 实例均具有AWS CLI已安装。
-
确保每个目标 Amazon EC2 实例均有一个 IAM 实例配置文件,至少附加了 lasticLoad Balancing: * 和 autoscaling: * 权限。
-
将部署生命周期事件脚本 (
register_with_elb.sh
、deregister_from_elb.sh
和common_functions.sh
) 包含在应用程序的源代码目录中。 -
在
appspec.yml
对于应用程序修订版,请提供 CodeDeploy 运行register_with_elb.sh
在ApplicationStart事件和deregister_from_elb.sh
在ApplicationStopevent. -
如果实例属于 Amazon EC2 Auto Scaling 组,则可跳过此步骤。
在
common_functions.sh
脚本中:-
如果您使用的是传统负载均衡器
,请在中指定 Elastic Load Balancing 负载均衡器的名称 ELB_LIST=""
,并对文件中的其他部署设置进行所需的任何更改。 -
如果您使用的是应用程序负载均衡器或 Network Load Balancer
,请在中指定 Elastic Load Balancing 目标组的名称。 TARGET_GROUP_LIST=""
,并对文件中的其他部署设置进行所需的任何更改。
-
-
将应用程序的源代码、
appspec.yml
和部署生命周期事件脚本绑定到一个应用程序修订中,然后上传该修订。将该修订部署到 Amazon EC2 实例。在部署期间,部署生命周期事件脚本将向负载均衡器取消注册 Amazon EC2 实例,等待连接耗尽,然后在部署完成后向负载均衡器重新注册 Amazon EC2 实例。