Я пытаюсь использовать HAProxy в качестве балансировщика нагрузки для 2 узлов mysql. У меня HAProxy прослушивает 3307, и он направляет запросы к БД на 3306. Когда клиент пытается подключиться к прокси (mysql -u ... -h .. -P3307 -p ...), он получает следующую ошибку :
ОШИБКА 2013 (HY000): потеряно соединение с сервером MySQL при «чтении начального пакета связи», система> ошибка: 0
Когда клиент пытается подключиться напрямую к БД, он работает нормально. Я понятия не имею, почему он не работает, когда трафик идет через прокси.
Вот что я уже проверил:
/etc/hosts.allow включает "mysqld: ALL: allow"
В конфигурационном файле MySQL (my.cnf) нет строки адреса привязки (открытой для всех).
Я использую HAProxy 1.5dev, Mysql 5.1.x, и вся enchilada работает в ec2 на Amazon linux.
Вот конфигурационный файл HAProxy:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
user haproxy
group haproxy
maxconn 4096
daemon
#debug
#quiet
defaults
log global
mode tcp
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 4096
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend mysql_cluster
bind 10.0.0.150:3307
default_backend mysql_cluster
backend mysql_cluster
mode tcp
balance roundrobin
option tcpka
option httpchk
server lb1 10.0.0.140:3306 check port 9200 inter 5s rise 2 fall 2
server lb2 10.0.0.214:3306 check port 9200 inter 5s rise 2 fall 2
listen stats 10.0.0.150:8081
mode http
option httpclose
balance roundrobin
stats uri /
stats realm Haproxy\ Statistics
stats auth ***:***
Кто-нибудь раньше занимался этой проблемой? Есть идеи, как это решить?
Любая помощь очень ценится
ОК, я решил. У меня возникла проблема с моим скриптом xinetd.
Не удалось привязать на 9200 - исправил в файле / etc / services.
Обычно это происходит, когда вы xinetd
Ошибка ответов службы проверки работоспособности.
вы можете отлаживать xinetd
по telnet
как это:
telnet IPADDR PORT # IPADDR: one of the IPs of your nodes
# PORT: the port that node is listening.
вывод сообщает вам о проблеме.
В моей настройке я не запускал xinetd, но обнаружил, что опция mysql-check вызывает проблемы. Так что я, по крайней мере, смог запустить haproxy, прокомментировав его. Я подозреваю, что mysql-check имеет какое-то отношение либо к неправильному использованию пользователя mysql, либо к отсутствию грантов.
Спасибо дорогой, отлично,
HAproxy необходимо, чтобы xinetd был правильно настроен для работы, иначе появится ошибка ниже:
ОШИБКА 2013 (HY000): потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 0
Xinetd будет перезапущен, если он уже запущен.
https://docs.openstack.org/ha-guide/shared-database-manage.html