(1)下载安装Keepalived源码包
Keepalived官网源码包下载地址
在服务器上解压
| tar -xf keepalived-2.2.8.tar.gz |
安装相关前置依赖
| yum -y install gcc gcc-c++ |
使用configure工具进行安装
| ./configure --sysconfdir=/etc --prefix=/usr/local/keepalived --sbindir=/usr/sbin --bindir=/usr/bin |
| |
| --sysconfdir=DIR |
| --prefix=DIR |
| --sbindir=DIR 指定命令位置,后面不需再配置环境变量 |
使用make make install进行安装
(2)配置Keepalived在业务中的参数
本次操作为Keepalived单VIP抢占式配置,即两个虚拟机只有一台绑定VIP对外提供服务,且在一台主机失能时VIP将漂移到备机上接收流量,当主机恢复时VIP将再次切换
主机配置
| global_defs { |
| router_id logincas1 |
| enable_script_security |
| script_user root |
| vrrp_version 2 |
| } |
| |
| vrrp_script chk_nginx { |
| script "/usr/local/nginx-check.sh" |
| interval 2 |
| timeout 4 |
| rise 4 |
| fall 2 |
| weight -50 |
| } |
| vrrp_instance VI_1 { |
| version 2 |
| state MASTER |
| interface eth0 |
| virtual_router_id 51 |
| priority 100 |
| advert_int 1 |
| authentication { |
| auth_type PASS |
| auth_pass 2222 |
| } |
| virtual_ipaddress { |
| 172.29.184.220/24 |
| } |
| track_script { |
| chk_nginx |
| } |
| |
| } |
接下来需要补充完善 nginx-check.sh
| 思路是通过去检测是否有Nginx进程,检测到没有nginx进程时先执行Nginx的重启操作,一秒之后再次检测,如果Nginx进程还是不存在则关闭Keepalived,使VIP漂移到另一个节点 |
| |
| |
| if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then |
| systemctl restart nginx |
| sleep 1 |
| if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then |
| systemctl stop keepalived |
| fi |
| fi |
遇到的一些问题
| 当在脚本里使用ps aux | grep nginx | grep -v grep | wc -l去检测Nginx进程时发现脚本一直未生效,合理怀疑是Keepalived运行用户在执行这条命令时存在权限问题(脚本不能配置权限为777,Keepalived会警告并失效) |
| 本次使用的高可用架构为单VIP架构,后续也可以尝试双VIP架构,即互为主备机,配置两个VIP模块,可以选择使用一个VIP接收流量,也可以使用两个VIP来监听流量,看业务的需求。 |
| 在单VIP高可用架构中,如果想要主机恢复后VIP不漂移到主机上,可以将主机的state也设置为BACKUP,但优先级需要比备机高一些,以确保初始状态VIP是绑定在主机上的 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库