HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用
HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用
当slave集群很大时,单点的haproxy如果挂了,可能会影响业务,所以可以部署两台haproxy,
再使用keepalived对这两台haproxy做分发,防止haproxy单点故障。
Ip地址划分:
240 mysql_b2
242 mysql_b1
247 haproxy1
249 haproxy2
243 VIP (注:此VIP不是master的,是keepalived的VIP,web通过该VIP分发给haproxy,haproxy分发给后端slave集群)
248 client
1、安装HAProxy
yum install gcc -y
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
cp /usr/src/haproxy/haproxy-1.5.3/examples/haproxy.cfg /usr/local/haproxy/
cp /usr/src/haproxy/haproxy-1.5.3/examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
ln -s /usr/local/haproxy/sbin/* /usr/sbin/
mkdir /etc/haproxy
mkdir /usr/share/haproxy
ln -s /usr/local/haproxy/haproxy.cfg /etc/haproxy/
cd ..
1.2 设置配置文件
1.2.1 拷贝配置文件
[root@HAProxy_247 haproxy]# cp haproxy.cfg /usr/local/haproxy/
cp: overwrite `/usr/local/haproxy/haproxy.cfg'? y
1.2.2 编辑配置文件
[root@HAProxy_247 haproxy]# vim /usr/local/haproxy/haproxy.cfg
注意修改RS的IP:
1.3 启动HAProxy服务
[root@HAProxy_247 haproxy]# service haproxy start
1.4 访问HAProxy的网页
http://localhost:8899/admin-status
用户名密码查看配置文件设置
1.5 客户端测试
2、安装配置keepalived
2.1 更新yum仓库
略...
2.2 安装keepalived
yum install keepalived -y
2.3 修改247上配置文件(覆盖原配置文件即可)
注:keepalived工作机制--同一组(virtual_router_id)的keepalived互相检测存活,优先级高的作用时,优先级低的沉睡。当优先级高的宕掉时,优先级低的顶替其工作。
vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" interval 2 } vrrp_instance VI_1 { state BACKUP nopreempt interface eth0 virtual_router_id 51 #定义分组ID,同一组ID相同 priority 100 #优先级 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.18.243 #VIP } track_script { chk_haproxy } notify_backup "/etc/init.d/haproxy restart" //切换主/备/出错时执行的脚本 notify_fault "/etc/init.d/haproxy stop" }
2.4 修改249上的主配置文件
! Configuration File for keepalived vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.18.243 } track_script { chk_haproxy } notify_backup "/etc/init.d/haproxy restart" notify_fault "/etc/init.d/haproxy stop" }
2.5 编写脚本,并放到指定位置
vim /etc/keepalived/chk.sh
#!/bin/bash if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then #判断haproxy是否存活,如果宕了,停止keepalived服务 /etc/init.d/keepalived stop fi
chmod +x chk.sh
2.6 开启keepalived并验证
service keepalived restart
开始时,VIP绑定到247的,249没有
在247上关闭HAProxy后:
VIP绑定到249了,247没有
2.7 客户端测试
通过keepalived的VIP访问测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了