ここにあるAlexWilliamsのチュートリアルに従って、ロードバランサーとしてHAProxyを使用してMySQLマルチマスターレプリケーションをセットアップしました。 http://www.alexwilliams.ca/blog/2009/08/10/using-haproxy-for-mysql-failover-and-redundancy/
ここにあるステータスチェッカーを使用しています。 http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/
また、ここにあるレプリケーションチェッカー。 http://forge.mysql.com/tools/tool.php?id=6
Mysqlステータスチェッカーは、HAProxy構成ファイルに次の行がある場合に正常に機能します。
server db02 192.168.15.119:3306 check port 9200 inter 1s weight 1 rise 1 fall 1
しかし、次の行を使用してレプリケーションチェックスクリプトをテストしようとすると、次のようになります。
server db02 192.168.15.119:3306 check port 9201 inter 1s weight 1 rise 1 fall 1
プロキシ経由で接続しようとすると失敗します:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
HAProxyマシンからそのポートにtelnetで接続すると、正常に機能します。
# telnet 192.168.15.119 9201
Trying 192.168.15.119...
Connected to 192.168.15.119.
Escape character is '^]'.
Replication slave is running
Connection closed by foreign Host.
Telnetで確認できるのにうまくいかない理由はありますか?これはHAProxyの制限ですか?これは他の人がセットアップに使用したものであるように思われるので、私はそうではないと思います。構成または権限の問題ですか?そのうちの1つがどのように機能し、正常に接続できるかについて混乱していますが、もう1つは機能しません。
Xinetdによって実行されるレプリケーションスクリプトはHTTP200または503を返す必要があるため、HAProxyはMySQLレプリケーションの状態を検出できます。