我正在尝试通过Ansible在ALB后面的AWS EC2 2节点集群上设置滚动部署。对于串行中的每个节点,大致过程都是这样的-
+----------+ +----------+ +----------+
|Remove app| |Redeploy | |Add back |
|from load |-->|new app |-->|to load |
|balancer | | | |balancer |
+----------+ +----------+ +----------+
我使用Ansible动态清单来选择我的节点,默认情况下,它们是按IP地址排序的。现在,在部署之前立即考虑这4个场景-
现在在方案#3下,我最终将删除唯一的健康节点。如何避免这种情况?
答案 0 :(得分:0)
在您的剧本中添加一个执行完整性检查的步骤,如果健康节点的剩余数量少于一个,则不允许您从负载均衡器中删除一个节点
或
研究如何首先优先从负载均衡器中删除不正常的节点。您能否按节点的健康检查状态将其分为几组,然后再处理不正常的节点?还是交替更改排序顺序,以使其通过健康检查状态而不是IP地址?
作为一种替代方法-您能否在删除旧节点之前添加新节点?
答案 1 :(得分:0)
好的,因为您有一个healthy
标志,所以可以用它来扮演一个update
角色:
- hosts: all
gather_facts: yes
tasks:
- include_role:
role: update
when: not healthy
- include_role:
role: update
when: healthy
这样,不健康的人就被首先处理了。