上一节我们只是把5节点pxc集群已经搭建完毕,实际上我们可以连接任何一个节点操作数据库,其它节点均会同步该节点数据。
关于负载均衡,相信大家都不陌生,例如web应用使用的nginx,这里我选择的是老牌的haproxy,至于原因,请大家自行查阅资料。
现在我们就用haproxy实现负载均衡
1️⃣拉取镜像haproxy
docker pull haproxy
2️⃣在宿主机上面创建haproxy的配置文件
global
chroot /usr/local/etc/haproxy #工作目录
log 127.0.0.1 local5 info
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
daemon #守护进程运行
defaults
log global
mode http
option httplog #日志格式
option dontlognull #日志中不记录负载均衡的心跳检测记录
timeout connect 5000 #连接超时(毫秒)
timeout client 50000 #客户端超时(毫秒)
timeout server 50000 #服务器超时(毫秒)
listen admin_stats #监控界面
bind 0.0.0.0:8888 #监控界面的访问的IP和端口
mode http #访问协议
stats uri /dbs #URI相对地址
stats realm Global\ statistics #统计报告格式
stats auth admin:abc123456
#登陆帐户信息 用户名:admin 密码:abc123456
listen proxy-mysql #数据库负载均衡
bind 0.0.0.0:3306 #访问的IP和端口
mode tcp #网络协议
balance roundrobin #负载均衡算法(轮询算法)
option tcplog #日志格式
option mysql-check user haproxy
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000
server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000
server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000
server MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000
server MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000
option tcpka #使用keepalive检测死链
3️⃣创建容器haproxy
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --privileged --net=net1 --ip 172.18.0.8 haproxy
(1)然后我们进入到h1容器内
docker exec -it h1 bash
(2)现在启动haproxy
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
(3)现在我们到node1数据库中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
create user 'haproxy'@'%' identified by '';
(4)创建完我们用客户端登录
奈斯非常好,我们之前做的都pxc里的数据都有;
4️⃣现在进入集群监控界面 http://192.168.33.20:4001/dbs
输入你的账号密码(刚刚在haproxy配置文件连设置的)
?,我的五个节点都在其正常运行。
在这里为了那些照顾那些习惯看中文的同志我用谷歌翻译了一下
好了,下一节咱们用keepalived实现双机热备