Keepalived 与 LVS 集成及多实例配置详解

一、Keepalived 扩展功能:LVS 集成与多实例管理

1. Keepalived + LVS:四层负载均衡高可用方案
1.1 集成原理与架构
  • 核心逻辑:Keepalived 通过 VRRP 实现 LVS 负载均衡节点的高可用,同时利用 LVS 的 IP 负载均衡技术(NAT/DR/TUN 模式)分发流量到后端服务器。

  • 组件分工

    • Keepalived:管理 VRRP 状态、VIP 漂移和节点健康检查。

    • LVS:基于 IP 层(OSI 第四层)实现流量转发,支持 TCP/UDP 协议(如 HTTP、MySQL、Redis)。

1.2 LVS 负载均衡模式
模式 原理 特点
NAT 负载均衡器作为网关,修改数据包源 / 目的 IP,后端服务器默认网关指向负载均衡器。 配置简单,需负载均衡器处理所有进出流量,适合小规模集群。
DR(直接路由) 负载均衡器仅修改数据包目的 MAC,后端服务器共享 VIP 的 IP 配置。 性能高,后端服务器需配置相同子网 IP,适合高吞吐量场景。
TUN(隧道模式) 负载均衡器与后端服务器通过 IP 隧道通信,支持跨子网部署。 支持地理分散的后端服务器,配置复杂。
1.3 配置示例(LVS DR 模式)
复制代码
# Keepalived 配置文件(主节点)
global_defs {
  router_id LVS_MASTER
}

vrrp_instance LVS_VIP {
  state MASTER
  interface eth0
  virtual_router_id 60
  priority 100
  virtual_ipaddress {
    192.168.1.254/24 dev eth0  # VIP
  }
}

# LVS 规则配置(通过 keepalived 动态注入)
virtual_server 192.168.1.254 80 {
  delay_loop 6
  lb_algo wlc  # 加权最小连接算法
  lb_kind DR  # DR 模式
  protocol TCP

  real_server 192.168.1.101 80 {
    weight 10
    TCP_CHECK {
      connect_port 80
      connect_timeout 3
      retry 3
    }
  }

  real_server 192.168.1.102 80 {
    weight 8
    TCP_CHECK {
      connect_port 80
      connect_timeout 3
      retry 3
    }
  }
}

关键配置说明

  • virtual_server:定义 VIP 和服务端口(如 80)。

  • lb_algo:负载均衡算法(支持 rr/wlc/lc 等)。

  • real_server:后端服务器 IP 及权重,TCP_CHECK 实现健康检查。

1.4 后端服务器配置(DR 模式)
复制代码
# 配置 VIP 别名(不启用 ARP 响应)
sudo ip addr add 192.168.1.254/32 dev lo:0
sudo arp -Ds 192.168.1.254 $(ifconfig eth0 | grep ether | awk '{print $2}') pub

原理 :后端服务器通过回环接口(lo)绑定 VIP 的 /32 地址,避免响应 ARP 请求干扰负载均衡器。

2. 多实例支持:单机管理多个独立高可用组
2.1 应用场景
  • 多业务隔离:同一物理机上运行多个 Keepalived 实例,分别管理不同业务的 VIP(如 Web 服务 VIP1、数据库 VIP2)。

  • 混合负载均衡:同时部署 LVS 负载均衡实例和纯 VRRP 高可用实例。

2.2 实例隔离机制
  • 配置文件隔离 :每个实例使用独立的配置文件(如 /etc/keepalived/instance1.conf/etc/keepalived/instance2.conf)。

  • 端口隔离

    • 主实例使用默认端口(VRRP 通告 UDP 112、管理接口 TCP 1936)。

    • 其他实例通过 vrrp_port 参数指定不同端口(如 113、1937)。

  • 进程隔离:每个实例以独立进程运行,通过不同 PID 文件区分。

2.3 配置示例(双实例)

实例 1:Web 服务高可用(纯 VRRP)

复制代码
# /etc/keepalived/web.conf
vrrp_instance WEB {
  state MASTER
  interface eth0
  virtual_router_id 70
  priority 100
  virtual_ipaddress {
    192.168.1.254/24
  }
  track_script {
    check_web
  }
}

实例 2:数据库负载均衡(LVS + VRRP)

复制代码
# /etc/keepalived/db.conf
global_defs {
  router_id LVS_DB
  vrrp_port 113  # 自定义 VRRP 端口
}

vrrp_instance DB {
  state MASTER
  interface eth0
  virtual_router_id 71
  priority 100
  virtual_ipaddress {
    192.168.1.255/24  # 独立 VIP
  }
}

virtual_server 192.168.1.255 3306 {
  lb_kind NAT
  real_server 192.168.1.103 3306 {
    weight 5
    TCP_CHECK { ... }
  }
}

启动命令

复制代码
# 实例 1
sudo keepalived -f /etc/keepalived/web.conf -D

# 实例 2
sudo keepalived -f /etc/keepalived/db.conf -D -p /var/run/keepalived_db.pid
2.4 管理与监控
  • 状态查看

    实例 1 状态

    sudo keepalived -S info -f /etc/keepalived/web.conf

    实例 2 状态

    sudo keepalived -S info -f /etc/keepalived/db.conf

  • 日志分离:每个实例配置独立日志文件:

    global_defs {
    log_file /var/log/keepalived_web.log # 实例 1 日志
    }

3. 扩展功能最佳实践
3.1 LVS 性能优化
  • 算法选择

    • 短连接业务(如 HTTP):使用 rr(轮询)或 wrr(加权轮询)。

    • 长连接业务(如数据库):使用 wlc(加权最小连接)。

  • 连接调度 :通过 persistence_timeout 配置会话保持(如电商购物车场景):

    virtual_server 192.168.1.254 80 {
    persistence_timeout 300 # 5 分钟内同一客户端 IP 路由到同一后端
    }

3.2 多实例资源分配
  • CPU 隔离 :为不同实例分配独立 CPU 核心(通过 systemd-cgroups)。

  • 内存限制 :使用 MemoryMax 参数限制实例内存占用:

    /etc/systemd/system/keepalived@.service.d/limit.conf

    [Service]
    MemoryMax=256M

3.3 云原生场景适配
  • 容器化部署 :在 Kubernetes 中使用 keepalived + ipvs 实现四层负载均衡,替代传统 NodePort 服务:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
    name: keepalived-lvs
    spec:
    template:
    spec:
    containers:
    - name: keepalived
    image: keepalived:latest
    volumeMounts:
    - mountPath: /etc/keepalived
    name: config

二、总结:扩展功能的价值与适用场景

  • Keepalived + LVS:提供 "高可用 + 负载均衡" 一体化解决方案,适合传统数据中心的四层流量分发场景(如金融交易、实时通信)。

  • 多实例管理:满足复杂业务架构下的资源隔离需求,避免单一实例故障影响全局,同时优化硬件利用率。

在实际应用中,建议根据业务特性选择扩展功能:

  • 无状态服务优先使用 LVS DR 模式,结合 Keepalived 实现高性能高可用。

  • 多业务场景通过多实例隔离,配合云原生技术(如容器、K8s)实现混合架构部署。

通过合理利用 Keepalived 的扩展功能,可在不引入复杂中间件的前提下,构建灵活、高效的基础设施层。

相关推荐
rain bye bye4 天前
calibre LVS run不起来跑不通
lvs
rain bye bye5 天前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
2301_787328498 天前
25.负载均衡-Nginx、HAProxy、LVS 全解析
nginx·负载均衡·lvs
小任今晚几点睡15 天前
LVS深度解析:从原理到实战的负载均衡完全指南
负载均衡·lvs
神秘人X70722 天前
Keepalived 高可用配置文档
linux·keepalived·高可用
Yyyy48223 天前
LVS TUN隧道模式
运维·网络·lvs
IT成长日记25 天前
【LVS入门宝典】LVS调度算法轮询(RR)深度解析:从原理到实战的公平调度之道
算法·lvs·rr·轮询调度算法
chen_note25 天前
LVS集群
nginx·lvs·haproxy·ipvsadm·lvs四种模式
Yyyy48225 天前
LVS三种模式及原理
服务器·php·lvs
Yyyy48225 天前
LVS、Nginx、HAProxy 的区别
运维·nginx·lvs