Page 1 of 1

使用绿蓝方法的在线部署示例

Posted: Mon Jan 27, 2025 5:28 am
by suchona.kani.z
正如您所看到的,使用了负载平衡中的蓝色节点,并进行了相应调整,然后重新集成到负载平衡中。中绿色节点处于负载平衡范围内,而深绿色节点表示早期版本。

示例图中以浅绿色标记的节点表示新版本。用户可以并行访问两个版本(深绿色和浅绿色)并在同一数据库上工作。这意味着必须首先调整数据库,但这通常可以毫无问题地完成。当然,您也可以通过这种方法使用两个数据库。然而,考虑到许可证和存储成本,这种方法更加昂贵。

然而,这种方法也有一些缺点:

节点始终必须从负载平衡中删除,因此不再可供用户使用。但是,可以通过添加并不总是负载平衡的附加节点来避免此缺点。
一次仅在一个节点上执行测试。因此,不会检测到各个节点的同步问题。
如果新版本出现严重错误,回滚就很困难。在这里,您必须对每个节点重复整个过程。
但金丝雀部署并不是唯一可以使用的方法,因为还有另一种模型,即绿蓝方法。



正如您在上图中看到的,绿蓝方法需要双重基础设施。您可以看 临床护士专家电子邮件列表 到一条绿线和一条蓝线,各有三个节点。用户可以访问绿线,但不能访问蓝线。适配机制将新版本应用于蓝线,然后用户可以访问绿线和蓝线。在负载均衡器上定义了一条规则,根据该规则,登录的用户最终只能使用新版本。就这样,所有用户都逐步使用新版本。如果不再使用旧版本,负载均衡器会自动将其脱机。

蓝绿法比金丝雀法成本更高,但更可靠。用户始终获得相同数量的节点。两个版本都处于活动状态时,用户可以访问比平常更多的节点。但最重要的是,回滚非常简单 - 您只需在负载均衡器上从绿线切换回蓝线即可。

容器
想象一下,您不仅需要将应用程序投入运行,还需要将带有负载均衡器和其他专用服务器的整个基础设施投入运行。在代码中拥有这个基础设施会让事情变得更加有趣。我相信您会同意,没有人愿意在技术环境中进行手动调整(例如输入 URL)。因此,所有过程和中间步骤都应该自动化。然而,这在经典环境中几乎是不可能的。这里你需要容器​​。

容器是一组软件模块,其中不仅包含应用程序,还包含操作系统。这样您就不再需要调整操作系统设置,只需交付整个包即可。可以将这些包从一种环境转移到另一种环境,而无需对其进行任何更改。从“外面”看,每个容器看起来都是一样的,尽管里面的东西当然有很大不同。因此得名“容器”。您可以在此处使用的典型软件是 Docker。


容器的示例性表示

集装箱管理
如上所述,不同的任务需要应用程序,例如负载均衡器上的应用程序节点或特定脚本。为了自动化这样的部署,同时实现自动扩展,你需要容器​​管理软件。如果版本控制系统中有新软件可用,管理软件能够完全自动创建新节点并部署新软件。管理软件也可以进行相应的编程(脚本化)。这使您可以确定如何进行部署 - 是使用金丝雀方法还是蓝绿方法。

您还可以在管理软件中定义某些标准 - 例如何时应将新节点添加到集群或何时应删除节点。通过这种方式,可以响应负载的增加或减少(例如由于用户数量的增加)。编程由管理接口控制。另一方面,用户可以通过代理访问集群,因此整个系统看起来就像一个“普通”服务器。

使用管理软件不仅具有较高的自动化水平,而且如果应用程序安装在云端也具有优势。

结论
正如您所看到的,在线部署不仅具有自动化的优势,而且是当今绝对必须的。要实现有效的在线部署,您不必使用容器或容器管理软件。但正如我向您展示的那样,这种努力有助于建立可靠的流程,为客户提供新软件。


Oliver Richter 最初是一名学生,现在是 adesso 的软件工程师。他对 DevOps 主题(例如 Docker、Vagrant 和 OpenShift)以及 Java 轻量级软件开发感兴趣。 Oliver 能够加深他在单元测试、构建管理和平台即服务等主题方面的知识。