keepalived 高可用配置
2021-09-17 14:09 清晨、午后 阅读(249) 评论(0) 编辑 收藏 举报1. 安装
sudo apt install keepalived
2. 配置
配置文件路径 /etc/keepalived,安装后默认会创建该目录,不存在时创建一个即可
特别注意:
1.配置文件权限必须为644,否则无法启动,且日志看不出异常
2./etc/keepalived 目录的权限为755,检测脚本的权限也为755,否则启动报错脚本不安全等
环境:使用 KVM 搭建两台虚拟机,使用桥接方式(虚拟机与宿主机网段相同,但是不能互相ping通)
主机:

global_defs { router_id KMS_HA script_user root # 指定脚本运行用户 enable_script_security } vrrp_script checkserver { script "/etc/keepalived/checkserver.sh" #检测脚本 interval 1 #监测间隔 weight -11 #失败时,优先级减2 fall 3 # 指定nginx检测脚本连续执行失败次数为3,才进行Failover rise 1 # 指定nginx检测脚本连续执行成功次数为1,才进行Failback } vrrp_instance VI_DB { state MASTER interface eno1 # 虚拟IP的网卡,与实际网卡一致 virtual_router_id 22 priority 100 # 优先级,主机挂掉后用此值决策哪个备机作为新主机 advert_int 1 authentication { auth_type PASS auth_pass 4422 } virtual_ipaddress { 10.7.11.48 # 虚拟为未被占用的ip地址 } unicast_src_ip 10.7.11.49 #本机ip unicast_peer { 10.7.11.41 #对端ip } track_script { checkserver #通过指定上面定义监控脚本来监控服务状态,以完成主备切换 } }
备机:

global_defs { router_id KMS_HA1 script_user root # 指定脚本运行用户 enable_script_security } vrrp_script checkserver { script "/etc/keepalived/checkserver.sh" #检测脚本 interval 1 #监测间隔 weight -11 #失败时,优先级减2 fall 3 # 指定nginx检测脚本连续执行失败次数为3,才进行Failover rise 1 # 指定nginx检测脚本连续执行成功次数为1,才进行Failback } vrrp_instance VI_DB { state MASTER interface eno1 # 虚拟IP的网卡,与实际网卡一致 virtual_router_id 22 priority 90 # 优先级,主机挂掉后用此值决策哪个备机作为新主机 advert_int 1 authentication { auth_type PASS auth_pass 4422 } virtual_ipaddress { 10.7.11.48 # 虚拟为未被占用的ip地址 } unicast_src_ip 10.7.11.41 #本机ip unicast_peer { 10.7.11.49 #对端ip } track_script { checkserver #通过指定上面定义监控脚本来监控服务状态,以完成主备切换 } }
3.检测脚本 checkserver.sh
检测脚本的规则为正常返回0,否则返回1
#!/bin/bash PIDS=`ps -ef |grep xxxserver |grep -v grep | awk '{print $2}'` if [ "$PIDS" != "" ]; then echo "xxxserver is runing!" exit 0 else exit 1fi
4. 验证
刚启动时虚拟ip(vip)在主机上,对外提供服务,当检测脚本返回-1的时候(或者直接停掉keepalived),备机虚拟出ip,并对外提供服务
----
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架