使用haproxy拆分mysql集群的读写

gdrx4gfi  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(244)

我在ubuntu16.04上有一个mysql集群,想用haproxy拆分读写。
所有连接将通过端口80完成。如果有人用x.x.x.x/write连接到服务器,我希望他被重定向到一个特定的服务器。到目前为止,这是我的配置,适用于默认设置(除了/write),但是当尝试连接/write时,我得到了“未知mysql服务器主机”。我的配置如下:

global
log 127.0.0.1 local0 notice
maxconn 2000
user haproxy
group haproxy

defaults
mode tcp
log global
retries 2
timeout connect 3000
timeout server 5000
timeout client 5000

backend read
balance roundrobin
server mysql1 192.168.0.4:3306
server mysql2 192.168.0.5:3306
server mysql3 192.168.0.6:3306

backend write
server mysql1 192.168.0.4:3306

frontend local
bind *:80
acl write url_beg /write
use_backend write if write
default_backend read

谢谢你的帮助!

ej83mcc0

ej83mcc01#

mysql连接中没有“url”,所以 url_beg 什么都比不上。连接到mysql服务器(或代理服务器)只通过ip地址或主机名完成,而不是主机名和路径,因为没有路径。检测客户端使用的主机名是不可能的,因为在建立连接时它不会被传递。
为了完成您想要的任务,您需要两个不同的主机名,指向haproxy服务器上的两个不同的ip地址,并且这两个ip中的每一个都有自己的独立名称 frontendbind 声明。

frontend read
  mode tcp
  bind 203.0.113.1:3306
  default_backend read

frontend write
  mode tcp
  bind 203.0.113.2:3306
  default_backend write

相关问题