Переключатель HAProxy только в случае отключения сервера

13

Допустим, у меня есть 2 сервера - SA и SB. Можно ли настроить HAProxy для работы следующим образом:

Все соединения идут к SA -> SA отключается -> HAProxy переключает все соединения на SB -> до тех пор, пока SB не отключится - никакие соединения не перейдут к SA, даже если он снова работает -> SB down -> HAProxy переключается на SA .. ,

Короче говоря, я бы хотел, чтобы HAProxy переключался только при отключении текущего сервера. Может быть, я должен использовать что-то еще, чем HAProxy?

Джо
источник

Ответы:

22

Проверьте этот конфиг:

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

Все запросы будут попадать на web01 по умолчанию. web02 не будет использоваться. Если web01 перестает отвечать, через 30 секунд (3 проверки с интервалом в 10 секунд) сервер будет отключен. web02 будет подключен к сети, и все запросы попадут в него.

Если web01 восстанавливается, он будет возвращен в оперативный режим только после проверки 99999999 с интервалом в 10 секунд, что практически никогда не происходит.

chrskly
источник
Это выглядит интересно. Я попробую ваше и @Dennis решение. Я также должен сделать несколько тестов, чтобы получить некоторые результаты. Спасибо.
Джо
1
Можно ли перевести web01 в автономный режим вручную? Не закрывать web01 / убивать его процесс, просто пометить его как выключенный?
Лимбо Пенг
К вашему сведению: по interумолчанию 2 с, по fallумолчанию 2 и по riseумолчанию 2. Больше можно найти здесь: haproxy.org/download/1.5/doc/configuration.txt
Джошуа Пинтер
5
-1, раствор перестал работать после 31 года безотказной работы = P
Gaspa79
6

Если у вас есть только два и ровно два сервера, возможно, имеет смысл использовать vip для службы, которой вы управляете с помощью pacemaker / corosync, чтобы обеспечить ее высокую доступность.

Это возможно и с haproxy, пометив SB как сервер резервного копирования. Таким образом, он используется только когда SA недоступен:

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

Однако это не выполняет вторую часть того, что вы хотите: он снова начнет использовать A SA, как только вернется. Я не уверен, есть ли возможность заставить haproxy вести себя так, как вы хотите. Я по крайней мере никогда не использовал это.

Деннис Каарсемакер
источник