带有haproxy的mysql场

时间:2015-11-10 12:42:46

标签: mysql haproxy

我想在具有容器的单个节点中配置数据库服务器场。我的想法是使用子域访问每个DB,例如mysql1.example.com:3306,mysql2.example.com:3306,mysql3.example.com:3306。

我正在尝试用HAProxy实现这个模型,似乎我第一次通过它运行的HAProxy连接到一个数据库。当我重新连接时,我得到: ERROR 2013(HY000):在“读取初始通信数据包”时与MySQL服务器的连接丢失,系统错误:0

我在HAproxy中使用的模板是:

global
    maxconn 256
    debug

defaults
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

listen www
    bind *:3306
    mode tcp

    acl host_mysql hdr(host) -i mysql1.example.com
    server mysql_db_1 172.31.20.75:3307

    acl host_mysql hdr(host) -i mysql2.example.com
    server mysql_db_2 172.31.20.75:3308

    acl host_mysql hdr(host) -i mysql3.example.com
    server mysql_db_3 172.31.20.75:3309

1 个答案:

答案 0 :(得分:1)

我自动回复。由于Mysql使用TCP协议,因此无法创建此实现,因此它不包括标头中的URL。因此,HAproxy无法重定向到正确的服务器。

我正在考虑使用分配给每个数据库的虚拟IP来实现此环境。另一个实现是在同一服务器和不同端口中运行所有数据库。