2016-09-29 31 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