我们有以下蓝色=绿色部署设计。想法是为了我们
我们在go.cd中相应地创建了管道。但是,我们遇到的问题是我们希望将最新代码部署到新转换为非活动状态的集群。 我们如何确保此内容不会再次变为活动状态?或其他人如何进行蓝绿色部署?谷歌搜索产生面向AWS的解决方案。我们不使用AWS或公共云。
编辑1
基础设施限制:我们的硬件仅适用于两个集群
是什么阻止您在实时集群中运行批处理作业?:实时集群正在提供生产查询,批量加载将占用机器资源,并可能使在线系统无响应< / p>
答案 0 :(得分:1)
我不确定这是否对您有所帮助,但在我们的设置中,我们有一个客户端谈论的负载均衡器。该LB知道哪些实例是实时的,哪些是黑暗的并且相应地转发流量。如果请求中有特殊的&#39;标头,LB将流量发送到暗池。我们为每个应用程序设置了这个设置(只是在您发布的图表中明确说明,有些人可能会认为整个平台是蓝绿色的)
所以它是一个图表,绿色星团是活的,蓝色是黑暗的(&lt; 3 ascii art)
[Client] <- I assume this is internal, otherwise add a FW :).
|
\|/
[Application Load Balancer] <- internal, per app
|
|\--------------\--------------\--------------\
\|/ \|/ \|/ \|/
[Node 1 G/L] [Node 2 G/L] [Node 3 B/D] [Node 4 B/D]
G = Green B = Blue
L = Live D = Dark
应用程序负载均衡器可以是多种技术。它可以是Gateway应用程序(如Netflix Zuul)或负载平衡网络服务器(如使用HAProxy的AirBnB Smartstack)。
值得一提的是,如果现场群集火上浇油,我们不会自动推广黑暗群集生活......我想说的是我们不会&# 39; t使用蓝色/绿色作为高可用性的替代方案。这是你的顾虑吗? (因为你在这里使用VIP并且保持活力)
感谢问题的答案。不幸的是,我不认为你能够成功地使用你的约束蓝绿色。
您是否考虑过只有一个大环境然后在Canary Release和蓝绿色之间进行某种混合?使用这种方法,最初你有5台服务器提供实时流量,1台提供黑暗流量(我假设你总共有6个盒子)。可以配置实时节点,以便3个节点获取实时流量,2个节点进行批处理。
当您对暗池中的代码感到满意时,您将逐个升级服务器,直到所有服务器都在实时池中提供实时流量。此时,您可能需要将2个批处理服务器移动到轻型池,除非您有办法更慢地移动它们(可能一次只能执行一个作业?)。
为了以防万一,我想要做一些非常清楚的事情,因为这可能会让你感到困惑(而且我不喜欢开发人员在痛苦中)。如果您的批处理是您平台的基本组成部分,您没有真正的高可用性环境,因为我在原始答案中列出的原因,如果您的实时群集因任何原因失败(数据库损坏?)您无法在剩余的硬件中运行。