Przełącznik HAProxy tylko w przypadku awarii serwera

13

Powiedzmy, że mam 2 serwery - SA i SB. Czy można skonfigurować HAProxy do pracy w następujący sposób:

Wszystkie połączenia idą do SA -> SA idzie w dół -> HAProxy przełącza wszystkie połączenia do SB -> dopóki SB nie jest w dół - żadne połączenia nie idą do SA, nawet jeśli znowu jest w górę -> SB w dół -> HAProxy przełącza się na SA .. .

W skrócie, chciałbym, aby HAProxy przełączał się tylko wtedy, gdy bieżący serwer nie działa. Może powinienem użyć czegoś innego niż HAProxy?

Joe
źródło

Odpowiedzi:

22

Sprawdź tę konfigurację:

listen my-server 0.0.0.0:80
    balance roundrobin
    server web01 10.10.10.1:80 check inter 10s fall 3 rise 99999999
    server web02 10.10.10.2:80 check backup

Wszystkie żądania domyślnie trafią do web01. web02 nie będzie używany. Jeśli web01 przestanie odpowiadać, po 30 sekundach (3 kontrole co 10 sekund) serwer zostanie wyłączony. web02 zostanie włączony do sieci i trafią w niego wszystkie żądania.

Jeśli web01 się zregeneruje, zostanie przywrócony online tylko po 99999999 czekach w odstępie 10 sekund - co nigdy nie jest skuteczne.

chrskly
źródło
To wygląda interesująco. Wypróbuję twoje i @Dennis rozwiązanie. Muszę też wykonać kilka testów, aby uzyskać wyniki. Dziękuję Ci.
Joe
1
Czy możliwe jest ręczne przełączenie web01 do trybu offline? Nie wyłączając web01 / zabijając jego proces, po prostu oznaczysz go jako wyłączony?
Limbo Peng,
FYI: interdomyślnie 2s, falldomyślnie 2 i risedomyślnie 2. Więcej można znaleźć tutaj: haproxy.org/download/1.5/doc/configuration.txt
Joshua Pinter
5
-1, rozwiązanie przestało działać po 31 latach
nieprzerwanej
6

Jeśli masz tylko dwa, a dokładnie dwa serwery, bardziej sensowne może być użycie vip dla usługi, którą zarządzasz za pomocą pacemaker / corosync, aby była wysoce dostępna.

Jest to możliwe również w przypadku haproxy, oznaczając SB jako serwer zapasowy. W ten sposób jest używane tylko wtedy, gdy SA nie jest dostępne:

backend mybackend
mode            http
balance         roundrobin
option          httpchk /test.html
server          server1.example.com server1.example.com:80 weight 1 check port 80 inter 5s rise 3 fall 2
server          server2.example.com server2.example.com:80 backup weight 1 check port 80 inter 5s rise 3 fall 2

Nie osiąga to jednak drugiej części tego, czego chcesz: zacznie ponownie używać SA, jak tylko wróci. Nie jestem pewien, czy istnieje opcja, aby haproxy zachowywał się tak, jak chcesz. Przynajmniej nigdy tego nie użyłem.

Dennis Kaarsemaker
źródło