介绍keepalived和LVS

发布于:2025-09-12 ⋅ 阅读:(16) ⋅ 点赞:(0)

Keepalived

什么是 Keepalived

Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)实现的高可用解决方案,主要用于防止单点故障。

主要功能

  1. 高可用性(HA)

    • 通过 VRRP 协议实现主备切换
    • 提供虚拟 IP(VIP)漂移功能
    • 支持健康检查
  2. 负载均衡

    • 可以作为 LVS 的管理工具
    • 自动管理 LVS 规则

工作原理

主服务器(MASTER)          备服务器(BACKUP)
    |                           |
    |<------- VRRP 心跳 ------->|
    |                           |
 VIP: 192.168.1.100         等待接管

配置示例

# /etc/keepalived/keepalived.conf
global_defs {
    router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state MASTER          # 主节点
    interface eth0        # 网络接口
    virtual_router_id 51  # 虚拟路由器ID
    priority 100          # 优先级
    advert_int 1          # 心跳间隔
    
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    
    virtual_ipaddress {
        192.168.1.100    # 虚拟IP
    }
}

LVS (Linux Virtual Server)

什么是 LVS

LVS 是 Linux 内核中的负载均衡解决方案,通过 IPVS(IP Virtual Server)模块实现四层负载均衡。

工作模式

  1. DR 模式(Direct Routing)

    客户端 --> Director --> Real Server
               |              |
               |<-- 直接响应 --|
    
    • 性能最好
    • Director 和 Real Server 必须在同一网段
    • 响应数据直接返回给客户端
  2. NAT 模式(Network Address Translation)

    客户端 <--> Director <--> Real Server
    
    • 所有流量都经过 Director
    • 支持端口映射
    • Director 成为瓶颈
  3. TUN 模式(IP Tunneling)

    客户端 --> Director --隧道--> Real Server
               |                      |
               |<---- 直接响应 ------|
    
    • 支持跨网段
    • 需要 Real Server 支持隧道

调度算法

  • 轮询(rr):依次分配
  • 加权轮询(wrr):根据权重分配
  • 最少连接(lc):选择连接数最少的服务器
  • 加权最少连接(wlc):默认算法
  • 源地址哈希(sh):相同 IP 分配到同一服务器

LVS 配置示例

# 添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s wlc

# 添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g -w 1

# 查看配置
ipvsadm -Ln

Keepalived + LVS 集成

架构示例

                    VIP: 192.168.1.100
                           |
        +------------------+------------------+
        |                                     |
   Director1(主)                         Director2(备)
   Keepalived                           Keepalived
   LVS/IPVS                            LVS/IPVS
        |                                     |
        +----------+----------+               |
        |          |          |               |
   RealServer1  RealServer2  RealServer3 -----+

集成配置示例

# Keepalived 配置中包含 LVS 配置
virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo wlc          # 调度算法
    lb_kind DR           # 工作模式
    protocol TCP
    
    real_server 192.168.1.10 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    
    real_server 192.168.1.11 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

应用场景

Keepalived 适用场景

  • 数据库主从切换(MySQL、PostgreSQL)
  • Web 服务高可用
  • 任何需要 IP 漂移的场景

LVS 适用场景

  • 大流量网站负载均衡
  • 四层负载均衡需求
  • 对性能要求极高的场景

优缺点对比

Keepalived:

  • 优点:配置简单、支持健康检查、可管理 LVS
  • 缺点:仅提供高可用,负载均衡依赖 LVS

LVS:

  • 优点:性能极高、稳定可靠、内核级别
  • 缺点:仅四层负载、配置相对复杂、功能单一

这两个工具经常配合使用,Keepalived 负责高可用和健康检查,LVS 负责实际的负载均衡,形成一个完整的高可用负载均衡解决方案。


网站公告

今日签到

点亮在社区的每一天
去签到