当前位置: 首页 > news >正文

基于keepalived、vip实现高可用nginx (centos)

基于keepalived、vip实现高可用nginx (centos)

1、安装keepalived

yum install keepalived

2、选同一局域网空置ip作vip

我这里测试是:
主:192.168.163.134
副:192.168.163.135
vip:192.168.163.140

3、keepalived配置

nginx检测脚本 (两台用一样脚本即可)

#!/bin/bash# 检查 Nginx 主进程是否存在(通过绝对路径匹配)
if ! pgrep -f "/usr/local/nginx/sbin/nginx" >/dev/null; then# 如果 Nginx 未运行,尝试重启(可选)/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf || exit 1sleep 1  # 等待重启完成# 再次检查,如果仍失败则返回错误pgrep -f "/usr/local/nginx/sbin/nginx" || exit 1
fi
exit 0

主vim /etc/keepalived/keepalived.conf

global_defs {router_id LVS_DEVEL
}# 添加 Nginx 健康检查脚本配置
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 2   # 每2秒检查一次weight -20   # 如果脚本返回非0,优先级降低20(确保备节点接管)fall 2       # 连续2次失败才认为故障rise 1       # 1次成功就认为恢复
}vrrp_instance VI_1 {state MASTER #主节点interface ens33 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是eth0)virtual_router_id 140 ## 虚拟路由ID号(主备节点一定要相同)priority 100mcast_src_ip 192.168.163.134 ## 本机ip地址advert_int 1 # 组播信息发送间隔,俩个节点必须配置一致,默认1sauthentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.163.140 ## 虚拟ip,可以指定多个}# 关联 Nginx 检查脚本track_script {chk_nginx}
}

副vim /etc/keepalived/keepalived.conf

global_defs {router_id LVS_DEVEL
}# 添加 Nginx 健康检查脚本配置
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 2   # 每2秒检查一次weight -20   # 如果脚本返回非0,优先级降低20(确保备节点接管)fall 2       # 连续2次失败才认为故障rise 1       # 1次成功就认为恢复
}vrrp_instance VI_1 {state BACKUP #从节点interface ens33 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是eth0)virtual_router_id 140 ## 虚拟路由ID号(主备节点一定要相同)priority 95mcast_src_ip 192.168.163.135 ## 本机ip地址advert_int 1 # 组播信息发送间隔,俩个节点必须配置一致,默认1sauthentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.163.140 ## 虚拟ip,可以指定多个}# 关联 Nginx 检查脚本track_script {chk_nginx}
}

配置好重启keepalived

systemctl restart keepalived  
检测命令:
ip addr    
测试方法:停掉nginx/直接stop keepalived

4、同理

mysql、k8s等也可基于如此实现高可用

相关文章:

  • 基于Python的机动车辆推荐及预测分析系统
  • 算法打卡22天
  • 探索大语言模型(LLM):Lora vs. QLora:参数高效微调的双生花,你该选谁?
  • threejs 实现720°全景图,;两种方式:环境贴图、CSS3DRenderer渲染
  • 实时输出subprocess.Popen运行程序的日志
  • 【mongoose8.x】mongoose8.x入门教程(一):windows环境安装篇
  • XML重复查询一条Sql语句??怎么解决
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • Vim:从入门到进阶的高效文本编辑器之旅
  • 利用DevEco Studio对RK3588的HiHopesOS-4.1.110(OpenHarmony)进行Qt程序编写
  • Web 应用防火墙(WAF)工作原理、防护策略与部署模式深度剖析
  • web布局04
  • 输入url之后发生了什么
  • 226. 翻转二叉树
  • Clickhouse源码分析-Replicated Database创建流程
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • NodeJS 对接 Outlook 发信服务器实现发信功能
  • 专题:2025游戏科技与市场趋势报告|附130+份报告PDF汇总下载
  • KungfuBot——基于物理约束的人形全身控制PBHC,用于学习高动态技能打拳或跳舞(即RL下的动作模仿和运控)
  • go客户端ssh交换机
  • 网站建设全/上海seo
  • 广西平台网站建设设计/chrome浏览器
  • 广州做网站多少钱/seo常用工具
  • 昆明营销型网站建设/seo快速排名网站优化
  • 做淘宝客网站域名是别人的/浙江seo博客
  • 往届生做网站编辑/网站快速排名案例