У меня есть следующие конфигурации для балансировки нагрузки кластера precona.
haproxy.cfg
global
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
#debug
#quiet
defaults
log global
mode http
option tcplog
option dontlognull
retries 3
maxconn 2000
timeout connect 3000
timeout server 5000
timeout client 5000
listen mysql-cluster
bind 127.0.0.1:3306
mode tcp
balance roundrobin
option mysql-check user root
server db01 192.168.54.158:3306 check
server db02 192.168.54.140:3306 check
Я последовал за этот руководство по настройке haproxy. Однако я не могу подключиться к кластеру из экземпляра haproxy.
mysql -u root -proot -h 127.0.0.1 --port=3306 -e "show variables like 'server_id'"
Выкинь следующую ошибку.
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Я попытался отладить проблему, просмотрев логи haproxy. Однако в / var / log / syslog не было никаких журналов или такого файла haproxy.log в / var / log / нет.
Я даже попытался обновить /etc/rsyslog.d/49-haproxy.conf до следующего и перезапустить службу rsyslog
$ModLoad imudp
$UDPServerRun 514
local0.* -/var/log/haproxy-0.log
local1.* -/var/log/haproxy-1.log
&~
Я использую haproxy версии 1.5.15 на ubuntu 14.04.1 LTS. Я могу напрямую подключиться к кластеру mysql с узла haproxy. Что бы здесь неправильно настроили? Как я могу правильно включить ведение журнала в haproxy?
Allow mysql server for remote login -:
/etc/mysql/my.cnf
127.0.0.1 to 0.0.0.0
Note – This command run on both mysql server
root@mysql-1# mysql -u root -p -e "INSERT INTO mysql.user (Host,User) values ('haproxy server ip ','haproxy_check'); FLUSH PRIVILEGES;"
root@mysql-1# mysql -u root -p -e "INSERT INTO mysql.user (Host,User) values ('haproxy server ip','haproxy_root'); FLUSH PRIVILEGES;"
A MySQL user is needed with root privileges when accessing the MySQL cluster from HAProxy. The default root user on all the servers are allowed to login only locally. While this can be fixed by granting additional privileges to the root user, it is better to have a separate user with root privileges.
Примечание. Эта команда выполняется на обоих серверах mysql.
root@mysql-1# mysql -u root -p -e "GRANT ALL PRIVILEGES ON *.* TO 'haproxy_root'@'haproxy server ip' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES"
# sudo service mysql restart
Then run below cmnd -:
sudo mysql -h haproxyserverIP -u haproxy_root -p -e "show variables like 'server_id'"