Commutateur HAProxy uniquement en cas de panne du serveur

13

Disons que j'ai 2 serveurs - SA et SB. Est-il possible de configurer HAProxy pour fonctionner comme ceci:

Toutes les connexions vont à SA -> SA descend -> HAProxy bascule toutes les connexions à SB -> jusqu'à ce que SB ne soit pas en panne - aucune connexion ne passe à SA, même si elle est à nouveau en hausse -> SB bas -> HAProxy passe à SA .. .

En bref, j'aimerais qu'HAProxy ne change que lorsque le serveur actuel tombe en panne. Peut-être devrais-je utiliser autre chose que HAProxy?

Joe
la source

Réponses:

22

Découvrez cette config:

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

Toutes les demandes atteindront web01 par défaut. web02 ne sera pas utilisé. Si web01 ne répond plus, après 30 secondes (3 vérifications à 10 secondes d'intervalle), le serveur sera mis hors ligne. web02 sera mis en ligne et toutes les demandes le toucheront.

Si web01 se rétablit, il ne sera remis en ligne qu'une fois 99999999 vérifiés à un intervalle de 10 secondes - ce qui n'est en fait jamais.

chrskly
la source
Ça a l'air intéressant. Je vais essayer votre solution et @Dennis. Je dois également faire des tests pour obtenir des résultats. Je vous remercie.
Joe
1
Est-il possible de mettre Web01 hors ligne manuellement? Ne pas arrêter web01 / tuer son processus, il suffit de le marquer comme arrêté?
Limbo Peng
FYI: par interdéfaut à 2s, par falldéfaut à 2 et par risedéfaut à 2. Plus d'informations peuvent être trouvées ici: haproxy.org/download/1.5/doc/configuration.txt
Joshua Pinter le
5
-1, la solution a cessé de fonctionner après 31 ans de disponibilité = P
Gaspa79
6

Si vous n'avez que deux et exactement deux serveurs, il peut être plus judicieux d'utiliser un vip pour le service que vous gérez via pacemaker / corosync pour le rendre hautement disponible.

C'est également possible avec haproxy, en marquant SB comme serveur de sauvegarde. De cette façon, il n'est utilisé que lorsque SA n'est pas disponible:

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

Cependant, cela n'accomplit pas la deuxième partie de ce que vous voulez: il recommencera à utiliser A SA dès qu'il sera de retour. Je ne sais pas s'il existe une option pour que le haproxy se comporte comme vous le souhaitez. Je ne l'ai au moins jamais utilisé.

Dennis Kaarsemaker
la source