利用keepalived可实现mysql、fastDFS等服务的高可用,单点故障时自动切换节点。
本文在CentOS7环境下,结合fastDFS,实现fastDFS的高可用性。
其他服务类似,只更换要检测的端口号即可
fastDFS的安装请参见FastDFS双机热备的实现
keepalived的安装请参见CentOS7安装keepalived
1.首先创建心跳检测脚本
vim /etc/keepalived/chk_fastdfs.sh
num1=$(netstat -na|grep "LISTEN"|grep "22122"|wc -l)
if [ "${num1}" -eq 0 ]; then
/etc/init.d/keepalived stop
fi
num2=$(netstat -na|grep "LISTEN"|grep "23000"|wc -l)
if [ "${num2}" -eq 0 ]; then
/etc/init.d/keepalived stop
fi #注意最后一个fi后面需要跟一个换行
fastDFS的端口为22122和23000,若其他服务则替换相应端口号
另外脚本需为unix格式的脚本,按ESC,输入:set ff=unit,回车,再保存退出即可
检测脚本是否可正常运行:
/etc/keepalived/
./chk_fastdfs.sh
报错则根据提示调整
2.编辑/etc/keepalived/keepalived.conf
在global_defs节点后、vrrp_instance VI_1前增加
vrrp_script chk_fastdfs {
script "/etc/keepalived/chk_fastdfs" #对应刚刚创建的心跳检测脚本
interval 2 #检测时间间隔
weight -20 #权重
}
修改vrrp_instance VI_1
这里的VI_1为实例名称,可自定义。若keepalived同时应用于fastDFS、mysql等多项服务的高可用性,则可添加多个vrrp_instance节点
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
mcast_src_ip 192.168.14.132 #指向本机IP
priority 100
nopreempt #新增
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #新增
chk_fastdfs #对应刚刚添加的节点名称
}
virtual_ipaddress {
192.168.14.200
}
}
3.重启keepalived服务
systemctl restart keepalived
4.测试,停掉fastDFS的tracker(对应端口22122)或storage(对应端口23000),
查看keepalived的状态
systemctl status keepalied
使用IP A在keepalived的各节点查看,发现IP漂移至可用服务器
5.配置成功后,调用fasfDFS(或其他相应服务)时,不再指向真实IP,需指向keepalived的虚拟IP,这样服务才可在某节点故障时,自动切换只可用节点
本文参考了以下链接,感谢原文作者:
https://blog.csdn.net/u012453843/article/details/69803244/