2016-09-29 33 views
0

haproxy中有以下配置。Ansible释放序列号:haproxy中两个不同后端的50%

backend 1 

machine-1 machine-1.com:8080 
machine-2 machine-2.com:8080 
machine-3 machine-3.com:8080 
machine-4 machine-4.com:8080 
machine-5 machine-5.com:8080 
machine-6 machine-6.com:8080 
machine-7 machine-7.com:8080 
machine-8 machine-8.com:8080 
machine-9 machine-9.com:8080 
machine-10 machine-10.com:8080 

backend 2 
machine-11 machine-11.com:8080 
machine-12 machine-12.com:8080 

Serial is set to 50% in ansible rolling deployment。我们也改变了机器的状态,以维护该窗口。因此,在第一次进行维修时,可以将机器1-6放在维修模式中,而在第二次维修时将7-12作为维护。

因为它把7-12作为维修在第二个去;后端2群集没有联机节点来接收流量。这会在应用程序端造成大量问题。

我该如何补救?我正在使用ansible 2.0.0。

编辑1

两个,我能想到的

  1. 解决方案使两个版本两个后端
  2. 在后端2更换1-6一个机一个机多用,说11

寻找其他解决方案。更多的是使用可行的解决方案。

+0

你可以把一个'wait_for'等待第6到移动之前在网上又是什么? – smiller171

+0

@ smiller171这将无济于事,因为它仍然会使机器7-12退出haproxy。在这样做的过程中,请在没有机器联机的情况下保留后端2。 –

回答

1

为每个后端创建一个host groups并在单独的运行中为每个后端组运行更新将是恕我直言的最佳解决方案。如果没有办法做到这一点,可以将自Ansible 2.2以来的批量大小定义为list

所以这应该工作:

- name: test play 
    hosts: backend servers. 
    serial: 
    - 5 
    - 1