带有 haproxy 的 mysql 农场

标签 mysql haproxy

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

我正在尝试使用 HAProxy 实现此模型,似乎我第一次通过 HAProxy 连接到一个数据库时它就可以工作。当我重新连接时,我得到: 错误 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

最佳答案

我会自动回复。由于 Mysql 使用 TCP 协议(protocol),因此不可能创建此实现,因此它不在 header 中包含 URL。因此 HAproxy 无法重定向到正确的服务器。

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

关于带有 haproxy 的 mysql 农场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630268/

相关文章:

linux - HAProxy 和 Keepalived 用于 rsyslog 负载平衡

postgresql - HAProxy 拆分读/写 postgresql

mysql - 重置根密码 : Unix and Unix-Like Systems 时出现问题

java - 使用从 MySQL 数据库读取列名的方法返回的数组已满 "null"

php - 将多维数组减少为查询字符串

amazon-ec2 - 关于用于动态 Ec2 实例管理的 RightScale 和 Scalr 的任何想法

logging - 处理重写规则后的 Haproxy 日志记录最终路径

mysql - HAProxy:从 DBCP 断开连接,为什么?

MySQL GROUP_CONCAT 重新排列值

php - 我应该使用 php mysql 或 json 文件来检索数据?