Я настроил многопользовательскую репликацию MySQL с HAProxy в качестве балансировщика нагрузки, следуя руководству Алекса Вильямса, которое можно найти здесь; 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
Когда я telnet с машины HAProxy на этот порт, он работает нормально:
# 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? Я бы предположил, что нет, поскольку кажется, что это то, что другие использовали для своих установок. Это проблема конфигурации или разрешений? Я не понимаю, как один из них будет работать и позволит мне нормально подключиться, а другой - нет.
Ваш сценарий репликации, запускаемый xinetd, должен возвращать HTTP 200 или 503, поэтому HAProxy может определить работоспособность репликации MySQL.