Docker Haproxy搭建PXC负载均衡

pxc集群信息

<code>pxc-node1 172.30.0.100 3306
pxc-node2 172.30.0.101 3306


pxc-node3 172.30.0.102 3306
/<code>

拉取docker镜像

<code>dcoker pull haproxy:1.9.3
/<code>创建数据卷挂载目录

<code>mkdir -p /pxc/haproxy
/<code>

配置文件

在/pxc/haproxy目录下,新建haproxy.cfg

<code>global
\t#工作目录
\tchroot /usr/local/etc/haproxy
\t#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
\tlog 127.0.0.1 local5 info
\t#守护进程运行
\tdaemon

defaults
\tlog\tglobal
\tmode\thttp
\t#日志格式
\toption\thttplog
\t#日志中不记录负载均衡的心跳检测记录
\toption\tdontlognull
#连接超时(毫秒)
\ttimeout connect 5000
#客户端超时(毫秒)
\ttimeout client 50000
\t#服务器超时(毫秒)
timeout server 50000

#监控界面\t
listen admin_stats
\t#监控界面的访问的IP和端口
\tbind 0.0.0.0:8888
\t#访问协议


mode http
\t#URI相对地址
stats uri /dbs
\t#统计报告格式
stats realm Global\\ statistics
\t#登陆帐户信息
stats auth admin:abc123456
#数据库负载均衡
listen proxy-mysql
\t#访问的IP和端口
\tbind 0.0.0.0:3306
#网络协议
\tmode tcp
\t#负载均衡算法(轮询算法)
\t#轮询算法:roundrobin
\t#权重算法:static-rr
\t#最少连接算法:leastconn
\t#请求源IP算法:source
balance roundrobin
\t#日志格式
option tcplog
\t#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy

server pxc-node1 172.30.0.100:3306 check weight 1 maxconn 2000
server pxc-node2 172.30.0.101:3306 check weight 1 maxconn 2000
server pxc-node3 172.30.0.102:3306 check weight 1 maxconn 2000

/<code>创建镜像

<code>docker run -d -p 4001:8888 -p 4002:3306 --name haproxy --net host -v /pxc/haproxy/:/usr/local/etc/haproxy haproxy:1.9.3
/<code>

数据库中创建haproxy账号

<code>创建haproxy 密码为空
create user 'haproxy'@'%' identified by '';
/<code>

验证

打开http://192.168.10.100:8888/dbs 查看监控页面看到三个pxc节点的状态均为up,即配置成功