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/[email protected]/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 的扩展功能,可在不引入复杂中间件的前提下,构建灵活、高效的基础设施层。

相关推荐
运维成长记11 分钟前
企业级调度器LVS
lvs
清寒敲代码5 小时前
LVS集群的基本原理和相关配置
运维·服务器·lvs
咖啡进修指南6 小时前
LVS原理详解及LVS负载均衡工作模式
linux·负载均衡·lvs
π大星星️2 天前
LVS + Keepalived + Nginx 高可用负载均衡系统实验
nginx·负载均衡·lvs
运维成长记2 天前
企业级调度器LVS TUN实践
lvs
影龙帝皖9 天前
Linux服务之lvs+keepalived nginx+keepalived负载均衡实例解析
linux·nginx·lvs
影龙帝皖10 天前
Linux服务之lvs集群与dr模式部署
linux·服务器·lvs
hnlucky12 天前
通俗易懂版知识点:Keepalived + LVS + Web + NFS 高可用集群到底是干什么的?
linux·前端·学习·github·web·可用性测试·lvs
m0_7415747512 天前
keepalived详细笔记
运维·keepalived