Nginx 高可用集群与 LVS 负载均衡实战指南(场景选型对比 + 完整配置步骤 + 主备漂移部署实操)
一、Nginx vs LVSipvsadm 核心场景对比表终极对照对比维度Nginx你的高可用方案LVSipvsadm4 层负载方案核心定位7 层应用层负载均衡4 层内核级负载均衡适用协议HTTP/HTTPSWeb、API、前端TCP/UDPMySQL、Redis、MQ、游戏网关性能单台扛 1-5 万 QPS满足中小项目单台扛 10 万 QPS超大流量核心功能部署前端、跨域、URL 重写、SSL、SPA 路由适配仅 IP 端口转发无业务逻辑配置复杂度低新手易上手高需配 DR 模式、ARP 抑制、ipvsadm 规则依赖工具Keepalived仅 VIP 漂移KeepalivedVIP 漂移 管理 LVS ipvsadm配置规则健康检查Nginx 自带upstreamLVSKeepalived 联动或单独配置你的场景是否需要✅ 必须选有前端、Web 业务❌ 完全不需要典型生产场景前后端分离项目、中小流量 Web 服务、企业业务系统数据库负载、Redis 集群、超大流量入口、纯 TCP 服务二、LVSipvsadm 核心适用场景什么时候必须用只有满足以下任意一条才需要部署 LVSipvsadm纯 TCP/UDP 服务负载MySQL 主从负载、Redis 集群入口、RabbitMQ、游戏 TCP 网关、FTP 服务等Nginx 虽能做但 LVS 性能更高、更适配超大流量入口日活百万级、QPS 超 5 万的 Web 服务用 LVS 做第一层 4 层转发后面挂 Nginx 集群跨机房 / 跨网段转发需要内核级低延迟转发不涉及 HTTP 业务逻辑无 Nginx 的纯后端服务集群比如只有 3 台 Tomcat无前端需 4 层端口转发。三、LVSipvsadm 完整配置步骤DR 模式生产最常用以「LVSKeepalived 做 MySQL 负载」为例典型 TCP 服务场景给你可直接复制的配置环境规划示例 IP角色IP 地址作用VIP192.168.1.200统一入口LVS 主节点192.168.1.204 层负载主节点LVS 备节点192.168.1.214 层负载备节点MySQL 节点 1192.168.1.30:3306后端数据库 1MySQL 节点 2192.168.1.31:3306后端数据库 2核心前提所有机器关闭防火墙 / 放行 VRRP 协议Keepalived 心跳systemctl stop firewalld systemctl disable firewalld所有机器关闭 SELinuxsetenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/configDR 模式要求所有机器在同一网段且网卡为桥接模式无 NAT。步骤 1安装 LVSipvsadmKeepalivedLVS 主 / 备都执行# CentOS/RHEL yum install -y ipvsadm keepalived # 加载ipvs内核模块开机自启 echo modprobe ip_vs /etc/rc.local chmod x /etc/rc.local modprobe ip_vs # 验证模块加载 lsmod | grep ip_vs步骤 2配置 LVS 主节点192.168.1.202.1 Keepalived 配置集成 LVS 规则mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak vi /etc/keepalived/keepalived.confglobal_defs { router_id LVS_MASTER } # 配置LVS负载规则替代手动ipvsadm命令 virtual_server 192.168.1.200 3306 { delay_loop 6 # 健康检查间隔6秒 lb_algo wrr # 加权轮询 lb_kind DR # DR模式最常用 persistence_timeout 0 # 关闭会话保持MySQL无需 protocol TCP # TCP协议 # 后端MySQL节点1 real_server 192.168.1.30 3306 { weight 1 # 权重 # 健康检查检测MySQL端口 TCP_CHECK { connect_port 3306 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } # 后端MySQL节点2 real_server 192.168.1.31 3306 { weight 1 TCP_CHECK { connect_port 3306 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } # VIP漂移配置 vrrp_instance VI_1 { state MASTER interface eth0 # 实际网卡名 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.200/24 dev eth0 # 绑定VIP到网卡 }2.2 配置 DR 模式 ARP 抑制主 / 备都执行关键vi /etc/sysctl.conf添加以下内容net.ipv4.ip_forward 1 net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 net.ipv4.conf.lo.arp_ignore 1 net.ipv4.conf.lo.arp_announce 2生效配置sysctl -p步骤 3配置 LVS 备节点192.168.1.21仅修改state和priority其余和主节点一致global_defs { router_id LVS_BACKUP } virtual_server 192.168.1.200 3306 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 0 protocol TCP real_server 192.168.1.30 3306 { weight 1 TCP_CHECK { connect_port 3306 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.1.31 3306 { weight 1 TCP_CHECK { connect_port 3306 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } vrrp_instance VI_1 { state BACKUP # 备节点 interface eth0 virtual_router_id 52 priority 80 # 优先级低于主 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.200/24 dev eth0 } }步骤 4配置后端 Real ServerMySQL 节点 1/2 都执行DR 模式要求后端节点绑定 VIP 到回环网卡lo# 绑定VIP到lo ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 up # 永久生效写入开机脚本 echo ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 up /etc/rc.local chmod x /etc/rc.local # 配置ARP抑制和LVS节点一致 vi /etc/sysctl.conf添加net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 net.ipv4.conf.lo.arp_ignore 1 net.ipv4.conf.lo.arp_announce 2生效sysctl -p步骤 5启动服务并验证LVS 主 / 备都执行# 启动Keepalived自动加载LVS规则 systemctl start keepalived systemctl enable keepalived # 查看ipvsadm规则验证LVS配置 ipvsadm -Ln # 正常输出 # IP Virtual Server version 1.2.1 (size4096) # Prot LocalAddress:Port Scheduler Flags # - RemoteAddress:Port Forward Weight ActiveConn InActConn # TCP 192.168.1.200:3306 wrr # - 192.168.1.30:3306 Route 1 0 0 # - 192.168.1.31:3306 Route 1 0 0 # 测试VIP漂移停主节点KeepalivedVIP自动飘到备节点 systemctl stop keepalived ip addr | grep 192.168.1.200 # 备节点能看到VIP步骤 6手动管理 ipvsadm 规则备用了解即可如果不用 Keepalived 自动配置可手动用 ipvsadm 命令# 添加VIP虚拟服务 ipvsadm -A -t 192.168.1.200:3306 -s wrr # 添加后端节点 ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.30:3306 -g # -gDR模式 ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.31:3306 -g # 保存规则开机自启 ipvsadm -S /etc/sysconfig/ipvsadm systemctl enable ipvsadm四、终极选择总结你该怎么选你的业务类型首选方案是否需要 ipvsadm核心配置要点前后端分离 Web 项目NginxKeepalived❌ 不需要upstream 负载、VIP 漂移、前端部署MySQL/Redis/MQ 等 TCP 服务LVSipvsadmKeepalived✅ 必须要DR 模式、ARP 抑制、VIP 漂移超大流量 Web 入口LVS (4 层)Nginx 集群 (7 层)✅ 必须要两层负载、LVS 管分发、Nginx 管业务五、关键提醒避坑LVS DR 模式必须关闭 ARP 响应否则会出现 VIP 冲突Keepalived 既可以做 VIP 漂移也可以直接管理 LVS 规则推荐无需手动用 ipvsadm你的 Web 场景有前端、API永远优先选 NginxLVS 只会增加复杂度ipvsadm 仅用于配置 LVS 规则无 LVS 则完全不用装。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2446778.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!