首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haproxy + percona 5.7 xtradb错误

Haproxy + percona 5.7 xtradb错误
EN

Stack Overflow用户
提问于 2016-10-11 13:31:56
回答 1查看 1.5K关注 0票数 0

我配置了Hello,我通过数字海洋手册配置haproxy,为Percona5.7基础配置roundrobin,但是在haproxy服务器上,当我试图连接到数据库时会出错。

在haproxy服务器上:

代码语言:javascript
复制
mysql -h 127.0.0.1 -u haproxy_root -p -e "SHOW DATABASES"

我得到了错误:

代码语言:javascript
复制
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

Haproxy配置:

代码语言:javascript
复制
    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配置:

代码语言:javascript
复制
# 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节点发了电话,就会得到:

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

发布于 2016-10-13 06:46:17

最常见的原因是集群中的所有节点都关闭了。如果启用了HAProxy统计数据,请检查所有节点是否已启动。否则,mysqlchk服务很可能无法正确连接到群集节点。

检查mysqlchk xinetd服务应该配置了正确的server_args。设置这些后,重新启动xinetd,并将telnet重新启动到端口9200以进行验证。

代码语言:javascript
复制
[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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39978454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档