web-dev-qa-db-ja.com

HAproxymysqlフェイルオーバー

MySQLレプリケーション用のPerconaxtraDBクラスターと負荷分散用のHAproxyを使用してHAクラスターをセットアップしようとしています。

HAproxyはApacheで非常にうまく機能します。Apacheがクラッシュした場合、または応答しない場合は、HAproxyが別のノードに切り替わります。

私の問題はMySQLから始まり、同じHAproxyにMySQLもセットアップしましたが、MySQLが応答しない場合、HAproxyは別のノードに切り替えません。ただし、HAproxy統計をチェックインすると、MySQLが原因に応答しないことがHAproxyに認識されます。MySQLサーバーがダウンしています。

私の質問は、HAproxyで2つのリソースを設定することは可能ですか?彼は、Apacheが起動しているかどうかを確認し、そうでない場合は別のノードをオンにし、MySQLが起動しているかどうかを確認し、そうでない場合は別のノードをオンにすることはできますか?

HAproxy.conf:

[...]
frontend redmine
    bind 192.168.7.149:80
    reqadd X-Forwarded-Proto:\ http
    default_backend redmine

frontend redmineS
    bind 192.168.7.149:443 ssl crt /etc/ssl/private/quipment.fr.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend redmine

backend redmine 192.168.7.149:80
    redirect scheme https if !{ ssl_fc }
    mode http
    balance roundrobin
    option http-server-close
    timeout http-keep-alive 3000
    option forwardfor
    cookie PHPSESSID prefix
    cookie SRVNAME insert
    server xtra1 192.168.7.151:80 cookie x1 check
    server xtra2 192.168.7.147:80 cookie x2 check
    server xtra3 192.168.7.152:80 cookie x3 check

listen mysql-cluster 192.168.7.149:3306
    mode tcp
    balance roundrobin
    option  httpchk
    server xtra1 192.168.7.151:3306 check port 9200 inter 1000 rise 3 fall 1
    server xtra2 192.168.7.147:3306 check port 9200 inter 1000 rise 3 fall 1
    server xtra3 192.168.7.152:3306 check port 9200 inter 1000 rise 3 fall 1
[...]
2
CharlesS

Httpのテストを実行するように指示しているMySQLセクションのように、HAProxyはMySQLの状態をテストしていません(行option httpchk)、 option mysql-check を使用する必要があるため、次のように読み取る必要があります。

listen mysql-cluster 192.168.7.149:3306
    mode tcp
    balance roundrobin
    option  mysql-check user a_test_user
    server xtra1 192.168.7.151:3306 check inter 1000 rise 3 fall 1
    server xtra2 192.168.7.147:3306 check inter 1000 rise 3 fall 1
    server xtra3 192.168.7.152:3306 check inter 1000 rise 3 fall 1

また、MySQLデータベースに、HAProxyからの接続を許可するユーザーa_test_userが必要です。

2
Pablo Martinez