Назад | Перейти на главную страницу

ОШИБКА 2013 при подключении к mysql через HAProxy

Я пытаюсь использовать HAProxy в качестве балансировщика нагрузки для 2 узлов mysql. У меня HAProxy прослушивает 3307, и он направляет запросы к БД на 3306. Когда клиент пытается подключиться к прокси (mysql -u ... -h .. -P3307 -p ...), он получает следующую ошибку :

ОШИБКА 2013 (HY000): потеряно соединение с сервером MySQL при «чтении начального пакета связи», система> ошибка: 0

Когда клиент пытается подключиться напрямую к БД, он работает нормально. Я понятия не имею, почему он не работает, когда трафик идет через прокси.

Вот что я уже проверил:

  1. /etc/hosts.allow включает "mysqld: ALL: allow"

  2. В конфигурационном файле 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