我配置了Hello,我通过数字海洋手册配置haproxy,为Percona5.7基础配置roundrobin,但是在haproxy服务器上,当我试图连接到数据库时会出错。
在haproxy服务器上:
mysql -h 127.0.0.1 -u haproxy_root -p -e "SHOW DATABASES"我得到了错误:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2Haproxy配置:
lobal
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 1024
#chroot /usr/share/haproxy
user haproxy
group haproxy
daemon
#debug
#quiet
defaults
log global
mode http
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 1024
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen galera_cluster
bind 127.0.0.1:3306
mode tcp
option httpchk
balance leastconn
server galera-node01 192.168.0.101:3306 check port 9200
server galera-node02 192.168.0.102:3306 check port 9200
server galera-node03 192.168.0.103:3306 check port 9200如果我直接连接到数据库192.168.0.101,一切正常,我会从数据库得到一个响应,但是当我通过haproxy 127.0.0.1发出请求时,会得到以下错误:
ERROR 2013 (HY000):在“读取初始通信包”时丢失与MySQL服务器的连接,系统错误:2
我在mysql上的xinetd配置:
# default: on
# description: mysqlchk
service mysqlchk
{
# this is a config for xinetd, place it in /etc/xinetd.d/
disable = no
flags = REUSE
socket_type = stream
type = UNLISTED
port = 9200
wait = no
user = nobody
server = /usr/bin/clustercheck
server_args = percona percona
log_on_failure += USERID
only_from = 0.0.0.0/0
#
# Passing arguments to clustercheck
# <user> <pass> <available_when_donor=0|1> <log_file> <available_when_readonly=0|1> <defaults_extra_file>"
# Recommended: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.local"
# Compatibility: server_args = user pass 1 /var/log/log-file 1 /etc/my.cnf.local"
# 55-to-56 upgrade: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.extra"
#
# recommended to put the IPs that need
# to connect exclusively (security purposes)
per_source = UNLIMITED
}如果我在9200端口上向PXC节点发了电话,就会得到:
telnet 192.168.0.101 9200
Trying 192.168.0.101...
Connected to 192.168.0.101.
Escape character is '^]'.
HTTP/1.1 503 Service Unavailable
Content-Type: text/plain
Connection: close
Content-Length: 57
Percona XtraDB Cluster Node is not synced or non-PRIM.
Connection closed by foreign host.发布于 2016-10-13 06:46:17
最常见的原因是集群中的所有节点都关闭了。如果启用了HAProxy统计数据,请检查所有节点是否已启动。否则,mysqlchk服务很可能无法正确连接到群集节点。
检查mysqlchk xinetd服务应该配置了正确的server_args。设置这些后,重新启动xinetd,并将telnet重新启动到端口9200以进行验证。
[root@node02 log]# cat /etc/xinetd.d/mysqlchk
# default: on
# description: mysqlchk
service mysqlchk
{
# this is a config for xinetd, place it in /etc/xinetd.d/
...
server = /usr/bin/clustercheck
server_args = percona percona
...
# Passing arguments to clustercheck
# <user> <pass> <available_when_donor=0|1> <log_file> <available_when_readonly=0|1> <defaults_extra_file>"
# Recommended: server_args = user pass 1 /var/log/log-file 0 /etc/my.cnf.local"
}更新:
一个更彻底的过程,包括确保mysqlchk配置,可以在这里找到sandbox.html。
https://stackoverflow.com/questions/39978454
复制相似问题