Невозможно подключиться к базе данных mysql через мои прокси-серверы HA [Keepalived используется для виртуального IP-VIP]

У меня работает HAProxy VIP:192.168.61.32Также я проверил netstat -tulnp|grep 3306

 tcp        0      0 192.168.61.32:3306      0.0.0.0:*               LISTEN      7895/haproxy 

Но когда я бегу mysql -h 192.168.61.32 -u root -p:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

Мои Backend Mysql узлы находятся на 192.168.61.33 & 192.168.61.34Я могу подключиться к ним напрямую, используя mysql -h 192.168.61.33 -u root -p

 mysql -h 192.168.61.34 -u root -p

2 ответа

Возможно, вам придется проверить, есть ли какие-либо ошибки соединения между haproxy и mysql. Если вы запустите systemctl status haproxyили же tail /var/log/haproxy-traffic.log, вы можете найти ошибку, похожую на приведенную ниже

Сервер mysql_farm/galera03 отключен, причина: неверный статус уровня 7, код:0, информация: «Хост 'xx.xx.xx.xx' заблокирован из-за множества ошибок подключения; разблокируйте с помощью 'mysqladmin flush-hosts'», проверьте продолжительность : 0 мс. Осталось 2 активных и 0 резервных серверов. 0 активных сеансов, 0 в очереди, 0 осталось в очереди.t

В этом случае вам нужно запустить команду mysqladmin flush-hostsчтобы очистить заблокированные IP-адреса от mysqld, чтобы haproxy мог снова подключиться.

Вам может понадобиться запустить команду как mysqladmin -uroot -p flush-hosts

Дополнительные сведения о том, как устранить ошибку, см. в документах ниже. https://dev.mysql.com/doc/refman/5.7/en/host-cache.html#blocked-хост

Я думаю, что вы можете перепроверить bind-address и отредактировать глобальный файл my.ini, в разделе [mysqld]:

[ТуздЫ]

- различные другие настройки

port = 3306
bind-address = 127.0.0.1

Сохраните этот файл, а затем перезапустите службу mysql с помощью команды:

service mysql restart

редактировать

Чтобы предоставить пользователю доступ с удаленного IP-адреса, запустите эту команду из оболочки mysql> при входе в систему с пользователем root MySQL:

GRANT ALL on somedb.* to someuser@192.168.61.32 identified by 'somepassword';

Если вы хотите предоставить доступ к someuser с любого удаленного IP:

GRANT ALL on somedb.* to someuser@% identified by 'somepassword';

После этих шагов обязательно перезапустите сервер MySQL, чтобы он прочитал изменения в конфигурации.

Другие вопросы по тегам