亚马逊云科技 CodeDeploy 中支持多负载均衡器

作者: 布莱恩·比奇 |

亚马逊云科技 CodeDeploy 是一项完全托管的部署服务,可自动将软件部署到各种计算服务,例如 亚马逊弹性计算云 (Amazon EC2) 、 亚马逊 弹性容器服务 (ECS) 亚马逊云科技 Lambd a 和本地服务器。亚马逊云科技 CodeDeploy 最近宣布支持 部署到使用多个 亚马逊云科技 弹性负载均衡器 (ELB) 的应用程序 。 将 CodeDeploy 与 Amazon EC2 配合使用 时 ,CodeDeploy 现在支持多个 经典负载均衡器 (CLB) ,以及与 应用程序负载均衡器 (ALB) 网络负载均衡器 (NLB) 关联的多个目标组。在这篇博客文章中,我将向您展示如何部署由多个负载均衡器提供的应用程序。

背景

亚马逊云科技 CodeDeploy 简化了在向弹性负载均衡器注册的 Amazon EC2 实例上部署应用程序更新的过程。该集成提供了一种自动化、可扩展的方式,可以在不影响应用程序可用性的情况下部署更新。

要将 CodeDeploy 与负载均衡器一起使用,您需要在已注册为经典负载均衡器、应用程序负载均衡器目标的 Amazon EC2 实例上安装 CodeDeploy 代理。创建 CodeDeploy 部署组时,您需要指定要向其部署更新的负载均衡器和目标组。

在部署期间,CodeDeploy 通过从负载均衡器中取消注册实例、部署新的应用程序修订版,然后重新注册实例以将流量路由回来,从而安全地转移流量。这种方法可确保在整个部署过程中保持应用程序容量和可用性。CodeDeploy 协调实例组之间的流量转移,以便以可控的方式部署部署。

CodeDeploy 根据您的需求提供两种部署方法可供选择:就地部署和蓝/绿部署。通过就地部署,流量将转移到同一组实例上的新应用程序修订版。这允许执行快速的增量更新。蓝/绿部署涉及将流量转移到运行新修订版的单独实例队列。如果需要,这种方法可以轻松回滚。CodeDeploy 使您可以轻松地在基础设施中自动执行任一部署策略。

具有多个负载均衡器的架构

CodeDeploy 与 Elastic Load Balancing 的扩展集成解锁了新的部署灵活性。用户现在可以注册多个经典负载均衡器以及与应用程序或网络负载均衡器关联的多个目标组。这允许您在利用多个目标组的复杂应用程序上部署更新。例如,许多客户运行的应用程序既服务于内部受众,也为外部受众提供服务。通常,这两个受众需要不同的身份验证和安全要求。通常通过不同的负载均衡器向内部和外部受众提供访问权限,如下图所示。

Architecture showing two load balancers, one external facing and one internal facing

过去,CodeDeploy 仅支持每个应用程序一个负载均衡器。运行内部和外部应用程序层的客户必须复制环境,为每个受众使用单独的 EC2 实例和 Amazon EC2 Auto Scaling 组。这导致了过度配置,增加了管理重复资源的开销。

通过支持多个负载均衡器,CodeDeploy 无需复制环境。用户现在可以将更新部署到单个环境,CodeDeploy 将在内部和外部负载均衡器上管理部署。您只需选择应用程序使用的所有目标组,如下图所示。

CodeDeploy configuration showing two load balancers selected

这种整合的方法降低了自动化部署时的基础设施成本和运营复杂性。CodeDeploy 在多个负载平衡目标组之间协调就地部署或蓝/绿部署。

从经典负载均衡器迁移

许多客户正在从经典负载均衡器 (CLB) 迁移到应用程序负载均衡器 (ALB) 或网络负载均衡器 (NLB)。ALB 和 NLB 提供比 CLB 更现代、更高级的功能集,包括集成的基于路径和基于主机的路由,以及原生 IPv6 支持。它们还通过更高的吞吐量和更低的延迟提供更好的负载平衡性能。其他好处包括与 亚马逊云科技 WAF、Shield 和全球加速器的原生集成,以及通过减少负载均衡器而可能节省成本。总体而言,迁移到 ALB 或 NLB 提供了获得高级功能、更好性能、更紧密的服务集成和降低成本的机会。

CodeDeploy 新的多目标组功能简化了从经典负载均衡器 (CLB) 向应用程序或网络负载均衡器(ALB 或 NLB)的迁移。在过渡期间,用户现在可以同时使用传统 CLB 和现代 ALB 或 NLB 部署应用程序。这样可以在完全切换之前顺畅地测试与新负载均衡器的集成。确认用户已停止使用 CLB 终端节点后,您可以删除 CLB。

在过渡期间,CodeDeploy 在单个自动化环境中协调跨负载均衡和绑定到 ALB 或 NLB 的目标群体的部署。用户只需在部署组中选择新负载均衡器的 CLB 和目标组,如下图所示。

CodeDeploy configuration showing a both a classic load balancer and target group selected

这种整合的方法允许 CodeDeploy 协调在 CLB 和 ALB/NLB 上的分阶段部署。通过简化对多个负载均衡器的管理,CodeDeploy 简化了基础设施现代化的关键流程,同时保持应用程序的可用性。

结论

CodeDeploy 与 Elastic Load Balancing 的扩展集成允许更灵活地部署应用程序。支持多个经典负载均衡器和与应用程序或网络负载均衡器相关的多个目标组,使您能够无缝更新 亚马逊云科技 上的复杂架构。无论您是整合不同的环境还是从经典负载均衡器迁移,CodeDeploy 都能简化跨多个负载平衡层的部署管理。要了解更多信息,请参阅 亚马逊云科技 CodeDeploy 开发者指南 中的 将 CodeDeploy 与弹性负载平衡 集成,或访问 Code Deploy 产品 页面。