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

服务器负载均衡架构部署:Keepalived+Nginx 实现双机热备与高可用负载均衡

Keepalived+Nginx 实现双机热备与高可用负载均衡部署指南

在本方案中,我们将使用 Keepalived 和 Nginx 构建一个高可用负载均衡系统。Keepalived 负责管理虚拟 IP(VIP)并实现双机热备(即一台主服务器故障时,备服务器自动接管),Nginx 则作为负载均衡器,将请求分发到后端应用服务器。这种架构确保了服务的高可用性(HA),避免单点故障。部署过程分为以下步骤,我将逐步解释,并提供配置示例。整个过程基于真实环境部署经验,确保可靠。

1. 环境准备
  • 硬件需求:准备两台服务器(例如,Server A 和 Server B),均安装 Linux 系统(如 CentOS 或 Ubuntu)。确保两台服务器在同一局域网内,IP 地址分别为 192.168.1.10192.168.1.11
  • 软件安装:在每台服务器上安装 Nginx 和 Keepalived。
    • 在 CentOS 上,使用命令:
      sudo yum install epel-release -y
      sudo yum install nginx keepalived -y
      

    • 在 Ubuntu 上,使用命令:
      sudo apt update
      sudo apt install nginx keepalived -y
      

  • 网络配置:为 VIP 选择一个未使用的 IP 地址,例如 192.168.1.100。确保防火墙允许相关端口(如 HTTP 80)。
2. 配置 Nginx 负载均衡

Nginx 作为负载均衡器,将请求分发到后端服务器(例如,两个应用服务器 192.168.1.20192.168.1.21)。在每台 Nginx 服务器上配置相同的负载均衡设置。

  • 编辑 Nginx 配置文件(例如 /etc/nginx/nginx.conf):
    http {upstream backend {# 定义后端服务器池server 192.168.1.20:80 weight=1; # 权重为1,表示均衡分发server 192.168.1.21:80 weight=1;# 可选:添加健康检查,如 max_fails=3 fail_timeout=10s}server {listen 80;server_name localhost;location / {proxy_pass http://backend; # 将请求代理到后端池proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
    }
    

    • 重启 Nginx 以应用配置:
      sudo systemctl restart nginx
      

3. 配置 Keepalived 实现双机热备

Keepalived 使用 VRRP 协议管理 VIP。一台服务器作为主节点(Master),另一台作为备节点(Backup)。当主节点故障时,备节点自动接管 VIP。

  • 在 Server A(主节点)上配置 Keepalived(编辑 /etc/keepalived/keepalived.conf):

    global_defs {router_id nginx_master # 唯一标识
    }vrrp_script chk_nginx {script "/usr/bin/killall -0 nginx" # 检查 Nginx 进程是否运行interval 2 # 每2秒检查一次weight 2 # 如果检查失败,权重减少2
    }vrrp_instance VI_1 {state MASTER # 主节点interface eth0 # 网络接口名virtual_router_id 51 # VRRP 组ID,必须相同(范围1-255)priority 100 # 优先级,主节点高于备节点advert_int 1 # 通告间隔1秒authentication {auth_type PASSauth_pass 1234 # 密码,需一致}virtual_ipaddress {192.168.1.100 # VIP}track_script {chk_nginx # 绑定健康检查脚本}
    }
    

  • 在 Server B(备节点)上配置 Keepalived(编辑相同文件):

    global_defs {router_id nginx_backup
    }vrrp_script chk_nginx {script "/usr/bin/killall -0 nginx"interval 2weight 2
    }vrrp_instance VI_1 {state BACKUP # 备节点interface eth0virtual_router_id 51 # 与主节点相同priority 90 # 优先级低于主节点advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100}track_script {chk_nginx}
    }
    

    • 启动 Keepalived 服务:
      sudo systemctl start keepalived
      sudo systemctl enable keepalived # 设置开机自启
      

4. 测试高可用性和故障转移
  • 验证 VIP 分配:在主节点上运行 ip addr show eth0,应显示 VIP 192.168.1.100。访问 http://192.168.1.100 应正常负载均衡到后端服务器。
  • 模拟故障测试
    • 停止主节点的 Nginx:sudo systemctl stop nginx。Keepalived 会检测到 Nginx 宕机(通过 chk_nginx 脚本),VIP 自动漂移到备节点。
    • 检查备节点:ip addr show eth0,VIP 应出现。访问 http://192.168.1.100 应继续工作。
    • 恢复主节点:重启 Nginx 和 Keepalived,VIP 应自动回切(基于优先级)。
  • 监控日志:查看 Keepalived 日志以确认故障转移:
    tail -f /var/log/messages # CentOS
    tail -f /var/log/syslog # Ubuntu
    

5. 总结与最佳实践
  • 优点:此架构实现了高可用性(无单点故障)和负载均衡(提升性能)。理论可用性可达 99.999%,具体取决于配置。
  • 最佳实践
    • 定期测试故障转移,确保可靠性。
    • 添加更多后端服务器以扩展负载能力。
    • 使用 SSL/TLS 加密时,在 Nginx 配置中添加证书。
    • 监控工具(如 Prometheus)可集成以实时跟踪状态。
  • 注意事项:确保网络稳定,VRRP 组 ID 在所有节点一致。如果遇到问题,检查防火墙规则(允许 VRRP 协议,端口 112)。

通过以上步骤,您可以成功部署 Keepalived+Nginx 的双机热备系统。如果您有具体环境细节(如 IP 地址或后端服务器),我可以进一步优化配置建议。

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

相关文章:

  • 内容分享网站设计在阿里巴巴上做网站有效果吗
  • SAP PP BOM主数据维护接口分享
  • 合成孔径雷达(SAR)及其信号处理:一文读懂,从类比到原理
  • 深度学习神经网络入门-问答学习
  • 化工防爆气象站:化工安全的气象监测设备
  • 做货运网站找哪家好如何用云服务器搭建个人网站
  • RAG拓展、变体、增强版(三)
  • 【PDF】PDF文件体详解
  • C++ STL list 容器学习笔记:双向链表的 “小火车“ 操控指南
  • Visual Studio Code (VS Code) 官方下载渠道
  • 网站制作的相关术语有哪些建一个网站多少钱
  • 企业网站建设属于什么费用搜索引擎优化的英文缩写
  • 告别“凭感觉”告警,金仓数据库替换MongoDB让运维更精准
  • 机器学习从业者大语言模型微调指南
  • Neo4j图数据库:简述增删改查
  • Mac版Color Folder v3.8安装教程(附dmg文件安装步骤和搜索关键词)
  • 金仓KES MongoDB兼容性深度解析与实践
  • Fiddler抓包实战教程 从安装配置到代理设置,详解Fiddler使用方法与调试技巧(HTTPHTTPS全面指南)
  • 对电子商务网站建设的感想4399网页游戏大全
  • 珠海专业医疗网站建设请人做ppt的网站
  • 印团网网站是哪家做的平面设计年终总结
  • 【u-boot】u-boot的I2C驱动框架剖析
  • JFrog vs Nexus vs Hadess,制品管理工具一文纵评
  • 【Docker】容器常用命令
  • Linux《Socket编程UDP》
  • Java IO 流进阶:Buffer 与 Channel 核心概念解析及与传统 IO 的本质区别
  • 【Linux基础开发工具 (一)】详解Linux软件生态与包管理器:从yum / apt原理到镜像源实战
  • 镇江网站营销推广电商怎么做如何从零开始视频
  • opencv 学习: 01 初识图片处理
  • 从 Wot UI 出发谈 VSCode 插件的自动化发布