上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用
一、先下载haproxy的镜像
[root@localhost ~]# docker pull haproxy
二、在host主机上写好配置文件,启动容器时候读取haproxy.cfg,vim /usr/local/docker/haproxy/haproxy.cfg
global#工作目录chroot /usr/local/etc/haproxy#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级infolog 127.0.0.1 local5 info#守护进程运行daemon defaultslog globalmode http#日志格式option httplog#日志中不记录负载均衡的心跳检测记录option dontlognull#连接超时(毫秒)timeout connect 5000#客户端超时(毫秒)timeout client 50000#服务器超时(毫秒)timeout server 50000 #监控界面 listen admin_stats#监控界面的访问的IP和端口bind 0.0.0.0:8888#访问协议mode http#URI相对地址stats uri /dbs#统计报告格式stats realm Global\ statistics#登陆帐户信息stats auth admin:haproxy #数据库负载均衡 listen proxy-mysql#访问的IP和端口bind 0.0.0.0:3306#网络协议mode tcp#负载均衡算法(轮询算法)#轮询算法:roundrobin#权重算法:static-rr#最少连接算法:leastconn#请求源IP算法:sourcebalance roundrobin#日志格式option tcplog#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测option mysql-check user haproxyserver MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000#使用keepalive检测死链option tcpka
三、在pxc集群里面先创建haproxy用户并授予权限
mysql> create user 'haproxy'@'%' identified by '';
四、启动第一个haproxy容器
[root@localhost haproxy]# docker run -it -d -p 4001:8888 -p 4002:3306 -v /usr/local/docker/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=pxc_network --ip 172.18.0.10 haproxy
启动haproxy
docker exec -it h1 bashhaproxy -f /usr/local/etc/haproxy/haproxy.cfg
先设置配置文件,vim /usr/local/docker/haproxy2/haproxy.cfg,当然你也可以设置其他的目录来存放第二个haproxy的配置文件
global#工作目录chroot /usr/local/etc/haproxy#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级infolog 127.0.0.1 local5 info#守护进程运行daemon defaultslog globalmode http#日志格式option httplog#日志中不记录负载均衡的心跳检测记录option dontlognull#连接超时(毫秒)timeout connect 5000#客户端超时(毫秒)timeout client 50000#服务器超时(毫秒)timeout server 50000 #监控界面 listen admin_stats#监控界面的访问的IP和端口bind 0.0.0.0:8888#访问协议mode http#URI相对地址stats uri /dbs#统计报告格式stats realm Global\ statistics#登陆帐户信息stats auth admin:haproxy #数据库负载均衡 listen proxy-mysql#访问的IP和端口bind 0.0.0.0:3306#网络协议mode tcp#负载均衡算法(轮询算法)#轮询算法:roundrobin#权重算法:static-rr#最少连接算法:leastconn#请求源IP算法:sourcebalance roundrobin#日志格式option tcplog#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测option mysql-check user haproxyserver MySQL_1 172.18.0.5:3306 check weight 1 maxconn 2000server MySQL_2 172.18.0.6:3306 check weight 1 maxconn 2000server MySQL_3 172.18.0.7:3306 check weight 1 maxconn 2000#使用keepalive检测死链option tcpka
接着我们启动第二个haproxy容器
[root@localhost haproxy]# docker run -it -d -p 4003:8888 -p 4004:3306 -v /usr/local/docker/haproxy2:/usr/local/etc/haproxy --name h2 --privileged --net=pxc_network --ip 172.18.0.20 haproxy
启动haproxy
docker exec -it h1 bashhaproxy -f /usr/local/etc/haproxy/haproxy.cfg
五、集群的监控界面,http://192.168.1.19:4001/dbs