文章目录

  • Keepalived + LVS(DR)+ Apache + NFS
    • 项目背景
      • 业务场景与核心需求
      • 传统架构的痛点与局限
      • 技术方案的选型逻辑
      • 项目价值与预期目标
    • 项目实践
      • 项目环境
      • 基础配置
      • 配置 router
      • 配置免密登录-可选
      • 配置 nfs
      • 配置 web
      • 配置 LVS-RS
      • 配置 HA 和 LVS-DS
        • 配置 ha1
        • 配置 ha2
      • 测试
        • 功能性测试
        • 高可用测试
        • 负载均衡测试
        • 负载均衡测试

Keepalived + LVS(DR)+ Apache + NFS

项目背景

业务场景与核心需求

随着企业数字化转型加速,Web 服务作为业务对外输出的核心载体,其高可用性、高并发承载能力、数据一致性成为支撑业务稳定运行的关键。以电商平台、企业官网、在线教育等典型场景为例,需满足以下核心需求:

  1. 高可用保障:Web 服务需实现 7×24 小时不间断运行,避免因单点故障(如服务器宕机、网络中断)导致业务中断,尤其在促销活动、峰值访问时段,服务不可用将直接造成经济损失或用户流失;

  2. 高并发承载:面对日益增长的用户访问量(如日均 PV 从 10 万级提升至百万级),单台 Web 服务器的 CPU、内存、网络带宽易成为瓶颈,需通过负载均衡分摊请求压力,保障页面响应速度(目标:95% 请求响应时间<1 秒);

  3. 数据一致性:Web 服务涉及大量静态资源(如 HTML、CSS、图片、视频)与动态业务数据(如用户上传文件、订单记录),多台 Web 服务器需共享资源,避免出现 “不同服务器展示内容不一致”(如用户在 A 服务器上传的图片,在 B 服务器无法访问)的问题;

  4. 易维护与扩展性:业务增长过程中,需支持快速新增 Web 节点扩展集群能力,同时减少运维复杂度(如避免每台服务器重复部署资源、手动同步配置)。

传统架构的痛点与局限

在采用《Keepalived + LVS(DR)+ Apache + NFS》方案前,多数企业曾使用 “单 Web 服务器” 或 “简单负载均衡” 架构,面临以下难以突破的局限:

  1. 单点故障风险高
  • 传统 “单台 Apache 服务器 + 本地存储” 架构中,服务器硬件故障(如硬盘损坏、电源故障)或软件异常(如 Apache 进程崩溃)将直接导致服务完全不可用,MTTR(平均恢复时间)依赖人工干预,通常超过 30 分钟,远无法满足业务连续性要求;

  • 即使采用 “2 台 Apache 服务器 + 简单 DNS 轮询”,若其中一台服务器宕机,DNS 缓存可能导致部分用户仍被解析至故障节点,且 DNS 轮询无法感知服务器负载状态,易出现 “故障节点持续接收请求” 或 “高负载节点被分配更多请求” 的问题。

  1. 并发承载能力不足
  • 单台 Apache 服务器受限于 CPU 核心数(如 4 核 8G 服务器仅能稳定承载约 2000-3000 并发连接),当访问量峰值超过阈值时,会出现请求排队、页面超时、503 错误等问题;

  • 若仅通过 “增加服务器数量” 扩展,缺乏高效的负载均衡机制,无法将请求合理分配至各节点,导致资源浪费(部分服务器空闲)与性能瓶颈(部分服务器过载)并存。

  1. 数据共享与一致性难题
  • 多台 Apache 服务器采用 “本地存储静态资源” 时,需通过脚本定期同步资源(如 rsync),但同步延迟易导致 “用户访问不同节点看到不同版本内容”(如首页图片更新后,部分节点仍展示旧图);

  • 动态数据(如用户上传的头像、订单附件)若存储在本地,将无法在多节点间共享,导致 “用户在 A 节点上传文件后,切换至 B 节点无法查看” 的业务异常。

  1. 运维效率低下
  • 每台 Web 服务器需单独部署 Apache 配置、静态资源、业务代码,新增节点时运维人员需重复操作,耗时且易出错(如配置文件漏改、资源版本不一致);

  • 缺乏统一的资源管理机制,当静态资源更新(如 CSS 样式调整、图片替换)时,需逐台服务器修改,运维成本随节点数量增加呈线性上升。

技术方案的选型逻辑

针对上述痛点,需构建一套 “高可用负载均衡 + 共享存储 + Web 服务集群” 的一体化架构,而《Keepalived + LVS(DR)+ Apache + NFS》组合正是基于以下核心诉求选型:

  1. 解决高可用与负载均衡
  • LVS(Direct Routing 模式)作为四层负载均衡器,具备超高并发承载能力(单机可支撑 10 万 + 并发连接),通过 DR 模式避免 “请求回程流量” 占用带宽,保障转发效率;

  • Keepalived 通过 VRRP 协议实现 LVS 主备高可用,主节点故障时,备节点可在 1-3 秒内自动接管虚拟 IP(VIP),实现 “无感知切换”,彻底消除负载均衡层单点故障。

  1. 保障 Web 服务稳定性
  • Apache 作为成熟的 Web 服务器,兼容性强、配置灵活,可稳定运行 PHP、Python 等动态业务代码,同时通过模块(如 mod_cache、mod_gzip)优化静态资源访问性能;

  • 多台 Apache 组成集群,通过 LVS 分摊请求压力,单节点故障时,LVS 自动将请求转发至其他健康节点,保障服务连续性。

  1. 实现数据一致性与共享
  • NFS(网络文件系统)作为共享存储,将所有 Web 服务器的静态资源(如 /images、/css 目录)与动态上传目录(如 /uploads)挂载至 NFS 服务器,实现 “多节点访问同一存储资源”,彻底解决数据同步问题;

  • NFS 支持权限控制与读写分离(可选配置),可保障资源访问安全性与存储性能。

  1. 降低运维复杂度
  • 架构模块化设计,各组件职责清晰(LVS 负责转发、Apache 负责服务、NFS 负责存储),便于故障定位与单独扩展;

  • 新增 Web 节点时,仅需安装 Apache 并挂载 NFS 目录,无需重复部署资源,运维效率提升 80% 以上。

项目价值与预期目标

通过部署《Keepalived + LVS(DR)+ Apache + NFS》架构,预期实现以下业务与技术价值:

  1. 业务连续性:Web 服务可用性从 99.9% 提升至 99.99%(年均 downtime 从 8.76 小时降至 52.56 分钟),核心业务场景(如电商促销、在线考试)无服务中断风险;

  2. 性能提升:并发承载能力从单台服务器 3000 并发提升至集群 10 万 + 并发,页面响应时间稳定在 500ms 以内,用户体验显著优化;

  3. 运维效率:资源部署与更新效率提升 80%,新增节点时间从 2 小时缩短至 15 分钟,减少重复人工操作;

  4. 扩展性:支持 Web 节点与 NFS 存储独立扩展(如新增 Apache 节点提升并发、扩容 NFS 存储容量),满足业务 3-5 年增长需求。

项目实践

项目环境

在这里插入图片描述

主机名IP 地址VIP 地址服务器角色
client2.laoma.cloud10.1.1.21客户端
client1.laoma.cloud10.1.8.21客户端
router.laoma.cloud10.1.1.20, 10.1.8.20路由器
ha1.laoma.cloud10.1.8.1410.1.8.100HA 和 LVS 服务器
ha2.laoma.cloud10.1.8.1510.1.8.100HA 和 LVS 服务器
web1.laoma.cloud10.1.8.11, 10.1.2.1110.1.8.100Web 服务器
web2.laoma.cloud10.1.8.12, 10.1.2.1210.1.8.100Web 服务器
web3.laoma.cloud10.1.8.13, 10.1.2.1310.1.8.100Web 服务器
nfs.laoma.cloud10.1.2.100存储服务器

网络说明:

  1. 所有主机:第一块网卡名为 ens33,第二块网卡名为 ens192
  2. 默认第一块网卡模式为nat,第二块网卡模式为hostonly
  3. 网关设置:10.1.1.0/24 网段网关为10.1.1.20,10.1.8.0/24 网段网关为10.1.8.20

基础配置

  • 主机名

  • IP 地址

  • 网关

    ## 网关配置命令参考## 10.1.1.0/24 网段网关为10.1.1.20
    nmcli connection modify ens33 ipv4.gateway 10.1.8.20
    nmcli connection up ens33## 10.1.8.0/24 网段网关为10.1.8.20
    nmcli connection modify ens33 ipv4.gateway 10.1.1.20
    nmcli connection up ens33
    

配置 router

## 开启路由
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
## 或者
## sed -i "s/ip_forward=0/ip_forward=1/g" /etc/sysctl.conf
sysctl -p

配置免密登录-可选

[root@client ~]## 
echo 'StrictHostKeyChecking no' >> /etc/ssh/ssh_config
ssh-keygen -t rsa -f .ssh/id_rsa -N ''
for host in server server{1..5}; do ssh-copy-id root@$host; done
for host in server server{1..5}; do scp /etc/ssh/ssh_config root@$host:/etc/ssh/ssh_config; done
for host in server server{1..5}; do ssh root@$host hostname; done## 同步/etc/hosts文件
for host in server server{1..5}; do scp /etc/hosts root@$host:/etc/hosts; done

配置 nfs

## 安装软件
yum install -y nfs-utils## 准备共享目录和文件
mkdir /var/www/html/ -p
echo Welcome to www.laoma.cloud > /var/www/html/index.html## 配置共享
echo '/var/www 10.1.2.0/24(rw,sync)' >> /etc/exports## 启用并启动服务
systemctl enable nfs-server.service --now

配置 web

[root@web1-3 ~]### 部署 web
yum install -y httpd
echo Welcome to $(hostname) > /var/www/html/index.html 
systemctl enable httpd.service --now## 访问后端 web
[root@client1 ~]## curl 10.1.8.11
Welcome to web1.laoma.cloud
[root@client1 ~]## curl 10.1.8.12
Welcome to web2.laoma.cloud
[root@client1 ~]## curl 10.1.8.13
Welcome to web3.laoma.cloud## 配置NFS挂载
[root@web1-3 ~]#
yum install -y nfs-utils
echo '10.1.2.100:/var/www /var/www/html nfs defaults 0 0' >> /etc/fstab
systemctl daemon-reload
mount -a
df /var/www/html

配置 LVS-RS

所有后端主机都要做相同配置。

[root@web1-3 ~]### 增加虚拟网卡
nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32
nmcli connection up dummy## 配置arp参数,关闭arp对dummy网卡的解析
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.dummy.arp_ignore = 1
net.ipv4.conf.dummy.arp_announce = 2
EOF
sysctl -p

配置 HA 和 LVS-DS

配置 ha1
yum install -y keepalived ipvsadm
cp /etc/keepalived/keepalived.conf{,.bak}
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id ha1
}vrrp_instance web {state MASTERinterface ens33virtual_router_id 51priority 110advert_int 1authentication {auth_type PASSauth_pass laoma@123}virtual_ipaddress {10.1.8.100/24}
}virtual_server 10.1.8.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 10.1.8.11 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.1.8.12 80 {weight 2TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.1.8.13 80 {weight 2TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}
}
systemctl enable keepalived.service --now
配置 ha2
yum install -y keepalived ipvsadm
cp /etc/keepalived/keepalived.conf{,.bak}
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id ha2
}vrrp_instance web {state BACKUPinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass laoma@123}virtual_ipaddress {10.1.8.100/24}
}virtual_server 10.1.8.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 10.1.8.11 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.1.8.12 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.1.8.13 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}
}
systemctl enable keepalived.service --now

测试

功能性测试
[root@client1 ~]## while true ;do curl -s http://10.1.8.100;sleep 1;done
Welcome to www.laoma.cloud
......[root@client2 ~]## while true ;do curl -s http://10.1.8.100;sleep 1;done
Welcome to www.laoma.cloud
......
高可用测试

持续监控集群可用性。

[root@client2 ~]## while true ;do curl -s http://10.1.8.100;sleep 1;done
......

测试1:停止 ha1 上 keepalived 服务。

[root@ha1 ~]## systemctl stop keepalived.service

结果:客户端无感知故障,正常访问集群。

测试2:恢复 ha1 上 keepalived 服务。

[root@ha1 ~]## systemctl start keepalived.service

结果:客户端无感知故障,正常访问集群。

负载均衡测试

测试1:停止 web2 上 httpd 服务,监控客户端访问情况。

[root@web2 ~]## systemctl stop httpd.httpd 

结果:大概 15 秒,LVS 将 web2 从后端虚拟主机中剔除。

测试2:启动 web2 上 httpd 服务,监控客户端访问情况。

[root@web2 ~]## systemctl start httpd.service

结果**:客户端无感知故障,正常访问集群。

测试2:恢复 ha1 上 keepalived 服务。

[root@ha1 ~]## systemctl start keepalived.service

结果:客户端无感知故障,正常访问集群。

负载均衡测试

测试1:停止 web2 上 httpd 服务,监控客户端访问情况。

[root@web2 ~]## systemctl stop httpd.httpd 

结果:大概 15 秒,LVS 将 web2 从后端虚拟主机中剔除。

测试2:启动 web2 上 httpd 服务,监控客户端访问情况。

[root@web2 ~]## systemctl start httpd.service

结果:大概 5 秒,LVS将web2加入后端虚拟主机中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95529.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95529.shtml
英文地址,请注明出处:http://en.pswp.cn/web/95529.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus监控预警系统深度解析:架构、优劣、成本与竞品

目录 一、Prometheus是什么&#xff1f;核心定位与架构 二、竞品分析&#xff08;Prometheus vs. Zabbix vs. Nagios vs. Commercial SaaS&#xff09; 三、部署成本分析 四、服务器资源消耗分析 五、给您的最终建议 一、Prometheus是什么&#xff1f;核心定位与架构 Prom…

Nginx反向代理及配置

Nginx反向代理 二级域名系统 顾名思义&#xff0c;我们有很多的这个不同的二级域名的用户来访问我们&#xff0c;比如说微博。它有一个主域名weibo.com。如果我叫一鸣,申请了一个微博&#xff0c;然后我就可以在微博这个主系统上申请一个二级域名来访问我微博的主页&#xff0…

嵌入式系统通信总线全景探秘:从板内到云端

引言 在嵌入式系统设计中&#xff0c;选择合适的通信总线是决定系统性能、成本和可靠性的关键因素。从简单的芯片间通信到复杂的工业网络&#xff0c;不同的总线技术各司其职&#xff0c;形成了嵌入式世界的"交通网络"。本文将深入探讨五种经典且重要的通信技术&…

2022版Unity创建时没有2D灯光(2D Light),没有Global LIght2D怎么办?

简单来说就是你的渲染管线没有升级到URP管线&#xff0c;所以才没有这些2D灯光 如果你的创建灯光和我一样&#xff0c;没有红线划掉的部分&#xff0c;说明你和我的问题一样&#xff0c;看下面的教程可以解决。 1. 确保Unity版本 确保你的Unity版本至少为2019.4或更高版本&…

技术小白如何快速的了解opentenbase?--把握四大特色

1.基本介绍 作为一名计算机专业相关背景的学生&#xff0c;我们或多或者接触过一些数据库&#xff0c;对于数据库肯定是有所了解的&#xff1b; 你可能学习的是和微软的sql server这样的数据库&#xff1b; 你可能接触的更多的是企业级项目开发里面使用的这个mysql数据库&#…

企业微信AI落地:如何选择企业微信服务商?

现在企业用企业微信做客户运营&#xff0c;最怕的不是“没AI工具”&#xff0c;而是“AI用不起来”——要么功能不贴业务场景&#xff0c;员工嫌麻烦不用&#xff1b;要么回复不专业&#xff0c;客户体验差&#xff1b;要么数据不同步&#xff0c;管理者看不到效果。其实解决这…

【学Python自动化】 11 标准库简介 —— 第二部分

一、格式化输出 reprlib 模块 提供定制版 repr()&#xff0c;缩略显示大型或深层嵌套对象import reprlib reprlib.repr(set(supercalifragilisticexpialidocious)) # "{a, c, d, e, f, g, ...}"pprint 模块 美化输出&#xff0c;添加换行和缩进显示复杂数据结构impor…

【Kubernetes】知识点2

15. 什么是Pod的根容器&#xff1f;答&#xff1a;Pod 的根容器是每个 Pod 中默认存在的一个特殊容器pause容器&#xff0c;有时也称为infra容器&#xff0c;它是Pod 启动时创建的第一个容器&#xff0c;也是整个 Pod中所有容器的 “父容器”。其核心作用是为 Pod 内的所有容器…

视频增强AI哪个效果好?实战对比帮你找到最适合的工具

hitpaw 牛小影hitpaw 牛小影在处理低质量视频时&#xff0c;我们经常会遇到画面模糊、噪点过多、分辨率不足等问题&#xff0c;比如老旧视频资料修复、监控录像清晰化、手机拍摄视频画质提升等。这时候&#xff0c;一款好用的视频增强AI软件就成了刚需。下面就为大家盘点几款效…

C#工作流示例(WorkflowCore)

using Microsoft.Extensions.DependencyInjection; using WorkflowCore.Interface; using WorkflowCore.Models;namespace LeaveRequestWorkflow {// 请假申请单public class LeaveBill{/// <summary>/// 申请人/// </summary>public string EmployeeName { get; s…

两个子进程之间使用命名pipe

两个子进程间可以使用命名管道&#xff0c;非常简单。管道如果文件一样存在硬盘中&#xff0c;使用ls可以查看&#xff0c;管道文件0字节。使用fork函数分别创建两个子进程。 一个负责读数据&#xff0c;一个负责写数据。 #define _GNU_SOURCE #include <stdio.h> #inclu…

第一讲、Kafka 初识与环境搭建

一、Kafka 是什么&#xff1f; Apache Kafka 是一个分布式的消息队列&#xff08;Message Queue&#xff09;与流处理平台。 它最早由 LinkedIn 开发&#xff0c;后来捐赠给 Apache 基金会&#xff0c;现已广泛应用于日志收集、实时数据管道和大数据处理。 Kafka 的特点&…

Conda相关的用法

1、背景 此文主要记录conda的一些用法&#xff0c;大部分命令来自ai搜索以及自己的理解。 2、安装conda 2.1 选择 conda 版本 2.1.1 Anaconda 含有 Conda 大量科学计算包&#xff08;NumPy、Pandas、Matplotlib 等&#xff09;适合数据科学、机器学习初学者下载地址&…

数据库选择有讲究?SQLite、PostgreSQL还是MySQL?

不同规模的项目&#xff0c;数据库选择有讲究。大家好&#xff0c;我是技术支持彼得&#xff0c;每天两眼一睁就是为客户解决问题。在日常使用我们的视频平台时&#xff0c;很多用户会问到数据库选择的问题。今天就来详细说说EasyGBS、EasyNVR和EasyCVR三大平台该如何选择数据库…

在VMware的Win10虚拟机中安装使用ENSP

VMware安装Windows10 安装ENSP及相关软件 把安装ENSP所使用的相关复制到已安装好的Windows10虚拟机中&#xff0c;如下图所示。 安装VirtualBox 安装时请确保路径为英文目录&#xff0c;并在出现"安装设备软件"或"Oracle USB设备"提示时选择安装选项。具…

Go 语言面试题详解之接口 (Interface) 详解一文吃透

自古流传着一个传言...在 Go 语言面试的时候必有人会问接口&#xff08;interface&#xff09;的实现原理。这又是为什么&#xff1f;为何对接口如此执着&#xff1f;实际上&#xff0c;Go 语言的接口设计在整体扮演着非常重要的角色&#xff0c;没有他&#xff0c;很多程序估计…

ansible循环+判断(with,loop,when,if,for)

一、文档核心定位 本文档聚焦Ansible自动化运维中的两大核心功能——循环与判断&#xff0c;通过“功能说明完整Playbook代码”的形式&#xff0c;覆盖循环迭代场景&#xff08;列表、字典、文件等&#xff09;、数据处理过滤器&#xff08;字符串、数字、加密等&#xff09;、…

在linux下使用MySQL常用的命令集合

1. 数据库查看和选择-- 查看所有数据库 SHOW DATABASES;-- 选择使用某个数据库&#xff08;需要修改&#xff1a;your_database_name&#xff09; USE your_database_name;-- 查看当前正在使用的数据库 SELECT DATABASE();说明&#xff1a;your_database_name 替换为你要操作的…

mysy2使用

参考链接 https://blog.csdn.net/qq_36525177/article/details/115279468 介绍 要把linux程序在windows上编译&#xff0c;且最好兼容posix标准&#xff0c;就用msys2。 使用 1、先下载安装&#xff0c;我装在D:\mysy2 2、打开vscode&#xff0c;不要切换目录&#xff0c;…

【Protues仿真】基于AT89C52单片机的温湿度测量

目录 0案例视频效果展示 1DHT11温度湿度传感器 1.1传感器简介 1.2引脚定义&#xff08;从左到右&#xff0c;面对网格面&#xff09; 1.3时序 & 校验&#xff08;原理速览&#xff09; 1.4常见故障排查 2 DHT11温度湿度传感器数据 2.1 DHT11温度湿度传感器数据格式…