LVS+KeepAlived+Nginx实现企业级业务高可靠部署的实战教程
在当今社会我们享受着便捷的IT服务包括政务、通信、银行、交通、网购、旅游等。这些服务背后是健壮安全的IT化架构提供支撑在某个节点故障后自动进行切换保证业务的高可用。当前主流的高可用解决方案为LVSLinux Virtual Server、Nginx、Keepalived的组合。LVS负责实现高效的负载均衡将用户请求合理分发至Nginx服务器Nginx服务器进行七层反向代理、动静态分离、SSL、缓存功能处理更为复杂的业务逻辑KeepAlived则承担LVS故障检测与主备切换、自动检测后端Nginx服务器健康状态(剔除和加入。通过三者的配合让整个服务处于安全稳定的状态。本文则详细介绍LVSKeepAlivedNginx企业级部署实战让我们一步步完成高可用IT架构的搭建。【整体架构】①LVSKeepalived2 台做四层转发 VIP高可用DR模式。②NginxN台做七层反向代理、动静态分离、SSL、缓存本文以2台Nginx为例。③VIP对外统一入口。对于单日百万级别访问量的业务会有N套“LVSKeepAlivedNginx”架构对应N个VIP地址。这些地址配置DNS服务器上实现一个域名对应多个VIP从而均衡业务流量。角色主机名IP虚拟 IPVIP172.16.1.100LVS主lvs-master172.16.1.101LVS备lvs-bcakup172.16.1.102Nginx节点1nginx-01172.16.1.200Nginx节点2nginx-02172.16.1.201【部署推荐】①LVS建议以物理机进行部署避免虚机因为迁移而引发脑裂问题②Nginx服务器建议采用虚机形式部署提升可横向扩展性和资源利用效率【部署流程】一、临时关闭所有服务器防火墙和selinux后续建议开启防火墙并放通策略。# systemctl stop firewalld# systemctl disable firewalld# setenforce 0二、LVS服务器上安装keepalive和LVS执行命令# yum install -y keepalived ipvsadm三、加载IPVS内核模块并永久生效配置modprobe ip_vsmodprobe ip_vs_rrmodprobe ip_vs_wrrmodprobe ip_vs_sh#永久让模块生效需要写到对应配置文件。echo ip_vs /etc/modules-load.d/ipvs.confecho ip_vs_rr /etc/modules-load.d/ipvs.confecho ip_vs_wrr /etc/modules-load.d/ipvs.confecho ip_vs_sh /etc/modules-load.d/ipvs.conf四、本文采用DR模式首先在主LVS服务器上执行。其配置文件路径为/etc/keepalived/keepalived.conf下图为keepalived部分配置文件的截图。五、按照规划要求修改keepalived.conf文件如下所示下面本文详细介绍各个参数含义global_defs {router_id lvs_master #配置其keepalived标识同一集群名称不能重复建议与hostname保持一致。}# 健康Nginx健康状态脚本vrrp_script check_nginx {script /etc/keepalived/check_nginx.sh #执行检查的脚本interval 2 #间隔2sweight -60 #权重调整值关键脚本检测失败时当前节点的优先级会减60fall 2 #失败阈值连续2次检测失败判定为服务真的故障rise 2 #恢复阈值连续2次检测成功判定为服务恢复正常}#VRRP高可用实例段 vrrp_instance VI_1vrrp_instance VI_1 {state MASTER #指定其为主用interface enp4s1 # 实际网卡名virtual_router_id 61 #设置VRRP ID主备LVS的ID必须保持一致。priority 150 #设置优先级数值越大越为主用advert_int 1 #VRRP心跳间隔单位为秒#下面进行VRRP主备关系的鉴权信息主备LVS密码不一致建立不了主备关系。authentication {auth_type PASS #主用备用建立VRRP需要鉴权auth_pass Lvs_server2026! #一定不要用弱口令}#设置VIP地址并绑定到网卡virtual_ipaddress {172.16.1.100/24 dev enp4s1 label enp4s1:0 #绑定到enp4s1并起别名enp4s1:0}track_script {check_nginx}}# LVS转发规则的核心配置virtual_server 172.16.1.100 80 { #设置LVS虚拟服务监听的端口delay_loop 1 #LVS每隔多长时间检查后端真实服务器状态单位为秒lb_algo wrr #负载算法常见为加权wrr,轮询rr,哈希shlb_kind DR #LVS工作模式DR直接路由还有其它NAT、TUNpersistence_timeout 0 #会话保持时间protocol TCP #协议TCP# Nginx 01真实服务配置real_server 172.16.1.200 80 {weight 1 #权重TCP_CHECK {connect_timeout 3 #TCP超时时间单位秒nb_get_retry 3 #重试次数delay_before_retry 3 #重试间隔}}# Nginx 02real_server 172.16.1.201 80 {weight 1TCP_CHECK {connect_timeout 3}}}# 如果需要用 HTTPS 再加 443端口。配置含义与上相同。virtual_server 172.16.1.100 443 {delay_loop 1lb_algo wrrlb_kind DRpersistence_timeout 0protocol TCPreal_server 172.16.1.200 443 {weight 1TCP_CHECK {connect_timeout 3}}real_server 172.16.1.201 443 {weight 1TCP_CHECK {connect_timeout 3}}}六、备用LVS服务器与主用LVS服务器配置只有下面2处不同state BACKUPpriority 100七、两台LVS服务器上都需要放置检测脚本检测脚本路径为/etc/keepalived/check_nginx.sh检测脚本内容为#!/bin/bash# 脚本路径/etc/keepalived/check_nginx.sh# 功能适配Keepalived的vrrp_script检测后端Nginx健康状态# 返回值规范0检测成功有可用Nginx非0检测失败全部Nginx不可用# 配合vrrp_script的fall/rise参数连续2次失败则触发优先级调整# 配置参数根据你的实际环境修改# 后端Nginx服务器IP列表空格分隔填写你的2台Nginx IPNGINX_SERVERS(172.16.1.200 172.16.1.201)# Nginx健康检查端口默认80如有改动请修改如443CHECK_PORT80# 检测超时时间秒建议不超过interval的一半TIMEOUT1# 配置结束 # 初始化可用服务器计数AVAILABLE_COUNT0# 遍历检测每台Nginx服务器端口连通性检测for server in ${NGINX_SERVERS[]}; do# 使用nc检测端口timeout控制超时/dev/null屏蔽无关输出if timeout ${TIMEOUT} nc -z -w1 ${server} ${CHECK_PORT} /dev/null 21; then((AVAILABLE_COUNT))fidone# 根据可用数量返回结果Keepalived核心判断依据if [ ${AVAILABLE_COUNT} -gt 0 ]; then# 至少1台Nginx可用返回0检测成功exit 0else# 全部Nginx不可用返回1检测失败exit 1fi并且赋予这个脚本执行权限chmod x /etc/keepalived/check_nginx.sh七、启动KeepAlived服务并且设置成开机自启systemctl start keepalivedsystemctl enable keepalivedsystemctl status keepalived八、真实服务器的Nginx安装可以参考之前文章《Nginx在企业级生产环境部署与最佳实践》Nginx在企业级生产环境部署与最佳实践九、LVS使用的DR模式需要让Nginx响应VIP的请求但是不ARP广播VIP。因此在2台Nginx服务器上均需要进行配置。本文采用shell脚本实现。新建/usr/local/bin/lvs_nginx.sh文件然后在文件中写入下述内容#!/bin/bash# 检查是否为 root 用户执行if [ $UID -ne 0 ]; thenecho 错误必须以 root 权限执行此脚本exit 1fiVIP172.16.1.100case $1 instart)# 配置 ARP 忽略/通告参数避免 VIP 漂移echo 1 /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 /proc/sys/net/ipv4/conf/all/arp_announceecho 1 /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 /proc/sys/net/ipv4/conf/lo/arp_announce# 配置 lo:0 别名接口兼容 ifconfig/ip 两种命令if command -v ifconfig /dev/null; thenifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP uproute add -host $VIP dev lo:0elseip addr add $VIP/32 dev lo label lo:0ip route add $VIP/32 dev lofiecho LVS-DR 模式已启用;;stop)# 关闭 lo:0 别名接口if command -v ifconfig /dev/null; thenifconfig lo:0 downelseip addr del $VIP/32 dev lo label lo:0ip route del $VIP/32 dev lofi# 恢复 ARP 参数默认值echo 0 /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 /proc/sys/net/ipv4/conf/all/arp_announceecho 0 /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 /proc/sys/net/ipv4/conf/lo/arp_announceecho LVS-DR 模式已关闭;;*)echo Usage: $0 {start|stop}exit 1;;esac十、给脚本设置执行权限并且将启动脚本写到开机自启文件中chmod x /usr/local/bin/lvs_nginx.sh/usr/local/bin/lvs_nginx.sh startecho /usr/local/bin/lvs_nginx.sh start /etc/rc.localchmod x /etc/rc.local十一、给Nginx修改首页界面。这里我们分别给nginx-01和nginx-02修改主界面。echo “nginx-01” /usr/share/nginx/html/index.htmlecho “nginx-02” /usr/share/nginx/html/index.html如果想测试验证Nginx的高级特性动静分离和反向代理可以参考之前的文章《Nginx在企业级生产环境部署与最佳实践》Nginx在企业级生产环境部署与最佳实践十二、这里我们分别测试停止LVS查看业务状态。这时请求VIP业务不受影响。请求界面在nginx-01和nginx-02不断切换。十三、在这个时候我们再停掉其中一个Nginx这时LVS只将请求打给另外一台NginxLVS会自动剔除关掉的那个节点。【LVSNginxKeepAlived常见的运维命令】# 查看 LVS 连接ipvsadm -ln# 查看状态统计ipvsadm -l --stats# 清空规则ipvsadm -C# 日志跟踪journalctl -u keepalived -f# 查看 VIP 所在机器ip addr | grep 172.16.1.100

相关新闻

《Qt从零入门系列(一):Qt框架初识——从发展历史到跨平台开发》

《Qt从零入门系列(一):Qt框架初识——从发展历史到跨平台开发》

在正式开始之前,先给即将入坑Qt的朋友们提个醒:Qt的开发是建立在C之上的,不具备一定的 C基础会走得比较吃力。面向对象、继承多态、信号槽背后的函数指针机制,这些东西如果没有C底子兜着,很容易卡在半路。提前打好基础…

2026/8/7 12:58:05 阅读更多 →
为什么你的正射影像总在关键区域“拉花”“重影”?

为什么你的正射影像总在关键区域“拉花”“重影”?

在很多项目现场,最让人头疼的,往往不是无人机没飞起来。 而是飞完之后,图不能用。 前线团队跑了几趟,测区覆盖了,照片也拿回来了。 可一到拼接阶段,问题就来了——桥梁边缘被“扯花”,厂房屋顶出…

2026/8/7 12:58:05 阅读更多 →
华为云盘古大模型访问指南:从API调用到行业解决方案的完整路径

华为云盘古大模型访问指南:从API调用到行业解决方案的完整路径

1. 项目概述:从“入口”到“生态”的认知跃迁 当大家搜索“华为盘古3.0大模型的访问入口在哪里?”时,我特别能理解这种心情。这背后通常不是单纯地找一个网址或一个登录按钮,而是一个更核心的诉求: “我该如何开始使用…

2026/8/7 12:58:05 阅读更多 →

最新新闻

大模型实战入门:从环境搭建到LoRA微调与RAG应用开发

大模型实战入门:从环境搭建到LoRA微调与RAG应用开发

1. 先搞清楚这套教程到底能帮你解决什么问题 如果你正在找一套能让你从零开始,真正把大模型跑起来、调起来、用起来的实战教程,那这篇内容值得你看完。现在网上关于大模型的资料很多,但普遍存在几个问题:要么是纯理论,…

2026/8/7 13:43:26 阅读更多 →
告别臃肿,华硕笔记本性能控制的新选择:G-Helper轻量化革命

告别臃肿,华硕笔记本性能控制的新选择:G-Helper轻量化革命

告别臃肿,华硕笔记本性能控制的新选择:G-Helper轻量化革命 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobo…

2026/8/7 13:43:26 阅读更多 →
如何3步搞定Chrome密码提取:专业工具终极实战指南

如何3步搞定Chrome密码提取:专业工具终极实战指南

如何3步搞定Chrome密码提取:专业工具终极实战指南 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass ChromePass是一个功能强大的开源Python工具,专门用于从…

2026/8/7 13:43:26 阅读更多 →
电子设计竞赛报告撰写指南:从结构到细节的国赛模板解析

电子设计竞赛报告撰写指南:从结构到细节的国赛模板解析

1. 项目概述:一份能直接“抄作业”的国赛报告模板在电子设计竞赛(电赛)的圈子里,流传着一句话:“三分靠做,七分靠写”。这里的“写”,指的就是那份决定最终成绩的竞赛报告。无论你的电路多么精妙…

2026/8/7 13:43:26 阅读更多 →
智能体架构与RAG技术如何构建AI投研助理:从需求解析到报告生成全流程

智能体架构与RAG技术如何构建AI投研助理:从需求解析到报告生成全流程

1. 项目概述:当投研不再高冷 “写一份关于新能源电池隔膜行业的深度报告。” 如果你对投资研究感兴趣,或者工作中需要快速了解一个行业,面对这样的需求,你的第一反应是什么?是打开搜索引擎,在浩如烟海、质量…

2026/8/7 13:43:26 阅读更多 →
UE5 FPS游戏开发:武器开火与伤害系统全流程实现指南

UE5 FPS游戏开发:武器开火与伤害系统全流程实现指南

1. 项目概述与核心目标 上次我们聊完了角色移动、跳跃和基础的摄像机控制,算是让角色在UE5的世界里能跑能跳了。这次,我们得让这个角色真正“硬核”起来——给他一把枪,让他能瞄准、能开火,并且能实实在在地对场景里的物体造成伤害…

2026/8/7 13:42:26 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →