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

Nginx + Keepalived 实现高可用负载均衡集群

Nginx + Keepalived 高可用负载均衡集群实现

Nginx 作为高性能的反向代理服务器,结合 Keepalived 实现 VIP(虚拟 IP)漂移,可以构建高可用的负载均衡集群。以下是具体实现方法:


环境准备

  • 两台以上服务器安装 Nginx 和 Keepalived
  • 统一的虚拟 IP(VIP),例如 10.96.4.32
  • 所有节点配置相同的 Nginx 负载均衡规则

Nginx 负载均衡配置

在每台 Nginx 服务器上配置相同的 upstream 规则,指向后端应用服务器:

http {upstream backend {server 192.168.1.101:8080;server 192.168.1.102:8080;server 192.168.1.103:8080;}server {listen 80;location / {proxy_pass http://backend;}}
}

Keepalived 主节点配置

主节点(Master)配置文件 /etc/keepalived/keepalived.conf
注:# 主备节点设为BACKUP+nopreempt才可以实现非抢占式


! Configuration File for keepalivedglobal_defs {router_id lb02 #标识信息
}vrrp_script check {script "/usr/local/nginx/check/check_nginx.sh"interval  4}vrrp_instance VI_1 {state BACKUP   #角色是master/backup  # 所有节点设为BACKUP+nopreempt才可以实现非抢占式interface eth0  #vip 绑定端口virtual_router_id 40    #让master 和backup在同一个虚拟路由里,id 号必须相同;priority 150            #优先级,谁的优先级高谁就是master ;advert_int 3            #心跳间隔时间nopreempt				#非抢占式authentication {auth_type PASS      #认证auth_pass 1111      #密码}virtual_ipaddress {10.96.4.32            #虚拟ip}track_script  {check}
}

Keepalived 备节点配置

备节点(Backup)配置文件差异部分:

global_defs {router_id  lb01
}vrrp_instance VI_1 {state BACKUPpriority 100# 其他配置与主节点相同
}

脚本本地检测,防止脑裂

#!/bin/bashNGPID=$(ps -C nginx --no-header|wc -l)
NGINX=/usr/local/nginx/sbin/nginx
HTTPCODE=$(curl -s -o /dev/null -w "%{http_code}" "http://192.168.1.101:8080/RATIOHandleProject/ProxyService/ReportListProxyService?wsdl")
if [ $NGPID -lt 4 ];then
#    	$NGINX
#	sleep 2NGPIDT=$(ps -C nginx --no-header|wc -l)if [ $NGPIDT -lt 4 ] && [ "$HTTPCODE" -ne 200 ];thenservice keepalived stop$NGINX -s stopfi
fi

健康检查机制

Keepalived 通过以下方式确保高可用:

  • 每 4 秒执行 check_nginx.sh 检查 Nginx 进程状态以及后端程序可用性检测
  • 当 Nginx 和后端程序异常时,触发 VIP 漂移到备用节点
  • 主节点恢复后,VIP 不自动回切(因设置 nopreempt 禁用抢占模式)
  • 心跳VIP之间每3秒进行VRRP协议通信检测

注意事项

  • 确保防火墙允许 VRRP 协议通信(IP 协议号 112)
  • 所有节点时间同步(NTP 服务)
  • 建议配置邮件报警通知运维人员
  • 生产环境建议使用至少 3 个节点避免脑裂问题
  • 监控Nginx和Keepalived的运行状态(zabbix/prometheus)

通过这种架构,可以实现前端负载均衡服务的毫秒级故障转移,确保业务连续性。

http://www.dtcms.com/a/344792.html

相关文章:

  • 前端桌面端解决方案技术选型:全面指南
  • 深入理解强化学习的target network
  • 3.5MM防水耳机插座
  • 为什么访问HTTPS站点时,会发生SSL证书错误
  • JAVA基础代码示例
  • SpringBoot -- 集成Spring Security (二)
  • LightGBM时序预测详解:从原理到 PSO 参数优化
  • 如何理解面向过程和面向对象,举例说明一下?
  • [docker/大数据]Spark快速入门
  • 【实时Linux实战系列】实时系统中的预测性维护策略
  • 能源行业合同管理难点有哪些?企业该如何应对?
  • FIFO核心原理与机制
  • QGIS 绿色版修正
  • 基于vtkImageViewer2的MPR(二):改进
  • JavaScript 操作 DOM
  • 图论——Floyd算法
  • 四十一、【高级特性篇】API 文档驱动:OpenAPI/Swagger 一键导入测试用例
  • 上市公司能源消耗数据库
  • 【python】os.makedirs和with open
  • 密码管理中硬编码密码
  • (论文速读)并行自回归视觉生成
  • 硬件驱动---linux内核驱动 启动
  • 【LeetCode】21. 合并两个有序链表
  • 开发二手车小程序时,如何确保信息的真实性和可靠性?
  • Prometheus+Grafana监控redis
  • 【连接器专题】连接器接触界面的理解
  • Elasticsearch Rails 集成(elasticsearch-model / ActiveRecord)
  • 高速互联技术——NVLink
  • SpringBoot3集成Oauth2.1——8自定义认证模式(密码模式)
  • 第九届86358贾家庄短片周在山西汾阳贾家庄举办