之前我已经搭建过PXC集群可以参考我之前的文章https://mp.csdn.net/mdeditor/95048994#
docker pull haproxy
1.sudo touch /usr/local/docker/haproxy/haproxy.cfg
2.sudo vi /usr/local/docker/haproxy/haproxy.cfg
global
#工作目录
chroot /usr/local/etc/haproxy
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
log 127.0.0.1 local5 info
#守护进程运行
daemon
defaults
log global
mode 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:abc123456
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口
bind 0.0.0.0:3306
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
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
#使用keepalive检测死链
option tcpka
注意上图标记的内容;
docker run -it -d -p 4001:8888 -p 4002:3306 -v /usr/local/docker/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
进入haproxy容器并启动haproxyhaproxy -f /usr/local/etc/haproxy/haproxy.cfg
现在我们到node1数据库中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测很好这样就算是完成了haproxy!
输入 ip a
查看我们主机的网卡
然后在浏览器打开 192.168.33.10:4001/dbs
输入你的账号密码(刚刚在haproxy配置文件连设置的)
首先说明一下:由于是在docker环境下,我们要搭建负载均衡集群需要通过keepalived抢占虚拟ip实现,而负载均衡功能需要haproxy中间件实现,所以本次我搭建的是一个在docker环境下高可用的负载均衡方案是:keepalived+haproxy。
在h1内创建keepalived
1️⃣进入h1
docker exec -it h1 bash
2️⃣下载一些小插件
apt-get update
apt-get install vim
apt-get install net-tools
apt-get install iputils-ping
3️⃣安装keepalived
apt-get install keepalived
4️⃣编辑配置文件
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.18.0.201
}
}
service keepalived start
6️⃣在主机里测试一下吧ping通了,代表成功!
如果创建了两个haproxy,那么在另一个容器操作也跟上面一样,注意虚拟ip和h1是一样的,在这里我就不操作了,自己领会吧
7️⃣我们在宿主机中再安装一个keepalived
yum install -y keepalived
编辑文件 这里不用创建文件 sudo vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.33.10
}
}
virtual_server 192.168.33.10 8888 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.33.10 8888 {
weight 1
}
}
virtual_server 192.168.33.10 3306 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 172.18.0.201 3306 {
weight 1
}
}
8️⃣运行keepalived在查看其状态
有两点需要注意:
1.interface后面接的网卡名字和宿主机的网卡是一致的;
2.虚拟ip地址在宿主机ip网段内;
OK!整个高可用集群搭建成功,今天太晚了,后续有什么问题在解决吧!