web-dev-qa-db-ja.com

サーバーがダウンした場合にのみHAProxyスイッチ

2つのサーバーがあるとしましょう-SAおよびSB。HAProxyを次のように構成することは可能ですか?

すべての接続がSA-> SAがダウンする-> HAProxyがすべての接続をSBに切り替える-> SBがダウンしないまで-SAへの接続がない再び起動した場合でも-> SBダウン-> HAProxyがSAに切り替わります...

手短に言えば、現在のサーバーがダウンしたときにのみHAProxyを切り替えたいと思います。たぶん私はHAProxy以外のsthを使うべきですか?

13
Joe

この構成を確認してください:

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秒後(10秒間隔で3つのチェック)、サーバーはオフラインになります。 web02がオンラインになり、すべてのリクエストがそれにヒットします。

Web01が回復した場合は、99999999のチェックが10秒経過するたびにオンラインに戻ります-これは事実上決してありません。

22
chrskly

サーバーが2つだけで2つしかない場合は、pacemaker/corosyncを介して管理するサービスにvipを使用して高可用性を実現する方が理にかなっています。

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

ただし、これでは目的のパート2は実現しません。ASAが再び使用されるとすぐに使用を開始します。haproxyをこのように動作させるオプションがあるかどうかはわかりません。私は少なくともそれを使ったことがありません。

6