Невозможно подключиться к базе данных 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, чтобы он прочитал изменения в конфигурации.