通俗易懂版知识点:Keepalived + LVS + Web + NFS 高可用集群到底是干什么的?

实验开始前,先搞懂为什么要部署该集群?

这个方案的目标是让网站 永不宕机 ,即使某台服务器挂了,用户也感觉不到。它主要涉及 负载均衡(LVS) + 高可用(Keepalived) + 共享存储(NFS),下面用最易懂的方式解释每个部分的作用和关键知识点。


1. Keepalived(高可用 VIP 管理)

作用 :让两台服务器(主+备)共同管理一个 虚拟IP(VIP),如果主服务器挂了,备服务器自动接管这个IP,用户无感知。

核心知识点

  • VRRP协议(类似"选举"机制):

    • 主服务器(Master)平时持有VIP,并不断向备服务器(Backup)发送心跳包。

    • 如果备服务器收不到心跳,就认为主服务器挂了,自己接管VIP。

  • 健康检查

    • Keepalived 可以监控 LVS 或 Web 服务是否正常,如果发现服务挂了,就自动切换。
  • 配置示例

    复制代码
    vrrp_instance VI_1 {
        state MASTER    # 主服务器是MASTER,备服务器是BACKUP
        interface eth0  # 网卡名称
        virtual_router_id 51  # 主备必须一致
        priority 100    # 主服务器优先级高(比如100),备服务器低(比如90)
        virtual_ipaddress {
            192.168.1.100  # 虚拟IP(VIP),用户访问这个IP
        }
    }

2. LVS(负载均衡,分摊流量)

作用 :把用户请求 均匀分发 到多台 Web 服务器,避免单台服务器压力过大。

核心知识点

  • 三种工作模式(最常用的是DR模式)

    • DR模式(直接路由)(性能最好):

      • LVS 只修改请求的MAC地址,让数据包直接返回给用户,不经过LVS。
    • NAT模式(较慢):

      • LVS 修改IP地址,所有流量都要经过它,容易成为瓶颈。
    • TUN模式(IP隧道,适用于跨机房):

      • 用IP封装技术,让请求可以跨网络传输。
  • 调度算法

    • rr(轮询):依次分发给每台服务器。

    • wrr(加权轮询):给性能好的服务器更多请求。

    • lc(最少连接):谁当前连接数少,就发给谁。

  • 配置示例(DR模式)

    复制代码
    ipvsadm -A -t 192.168.1.100:80 -s rr  # 对VIP的80端口使用轮询
    ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g  # 添加Web服务器1(DR模式)
    ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g  # 添加Web服务器2

3. Web服务器(Nginx/Apache)

作用:真正处理用户请求的服务器,多台Web服务器通过LVS分摊流量。

核心知识点

  • 所有Web服务器内容要一致

    • 通过 NFS 共享存储 或者 rsync同步 保证文件一致。
  • Session会话保持(如果网站需要登录):

    • 方法1:用 ip_hash(Nginx)让同一用户始终访问同一台Web服务器。

    • 方法2:用 Redis 存储Session,所有Web服务器共用。

  • 健康检查

    • LVS 或 Keepalived 会定期检查Web服务器是否存活,挂了的机器会被踢出集群。

4. NFS(共享存储,让多台Web服务器用同一套文件)

作用:所有Web服务器挂载同一个NFS目录,保证网站内容一致(比如上传的图片、配置文件等)。

核心知识点

  • NFS服务器配置

    复制代码
    # NFS服务器(假设IP是192.168.1.200)
    vim /etc/exports
    /data/web 192.168.1.0/24(rw,sync,no_root_squash)  # 允许Web服务器读写/data/web
  • Web服务器挂载NFS

    复制代码
    mount -t nfs 192.168.1.200:/data/web /var/www/html
  • 注意事项

    • NFS单点故障:如果NFS服务器挂了,所有Web服务器都会受影响!解决方案:

      • NFS + DRBD(实时同步到另一台备份NFS)

      • 改用分布式存储(如GlusterFS、Ceph)


整体架构图

复制代码

常见问题 & 优化

  1. LVS DR模式ARP问题

    • 要在Web服务器上隐藏VIP,避免它们响应ARP请求:

      复制代码
      echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
      echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  2. NFS性能慢

    • 可以换用 GlusterFSCeph 这类分布式存储。
  3. Session不一致

    • 用Redis存Session,所有Web服务器共用。

总结

  • Keepalived = 高可用,VIP自动切换(主备模式)。

  • LVS = 负载均衡,把请求分发给多台Web服务器。

  • Web服务器 = 真正处理请求的机器,多台保证冗余。

  • NFS = 共享存储,让所有Web服务器数据一致。

这样,即使某台Web服务器、LVS、甚至Keepalived主节点挂了,整个网站仍然可以正常访问! 🚀

相关推荐
吃瓜的猹6 分钟前
Gemini 3.8 Flash 是真的站起来了,一起来看看我到底做了什么吧~
前端
光影少年6 分钟前
React18 对RN 的影响
android·前端·react.js·ios·前端框架
正仪7 分钟前
systemd 是什么?
linux·运维·windows
暖核9 分钟前
华为云运维三件套实战:云审计 + 云监控 + 云日志完整操作指南
linux·运维·华为云
tryCbest14 分钟前
Vue Router学习及使用
前端·vue.js
杉氧16 分钟前
丝滑的奥秘:Reanimated 3 动画引擎与手势处理(Gesture Handler)
android·前端·react native
用户9701615016827 分钟前
浏览器切到后台后,AI 给我的代码就失效了:我拿 3 个模型测了 6 个定时器坑
前端·代码规范
蓝星空200032 分钟前
GPT Image 2.5 生图模型已上线,支持 Flare 与 Sunburst 型号选择
前端·gpt·aigc·image2·imagen
AI+程序员在路上40 分钟前
Rv1126b与手机(SPP蓝牙串口APP)蓝牙通信流程
linux·c语言·智能手机
何何____44 分钟前
js常见继承方法详解
前端·javascript