服务器使用LVS+KEEPALIVED实现高可用负载均衡

服务器使用LVS+Keepalived实现高可用负载均衡,是一种成熟且广泛应用的解决方案,其核心原理和配置要点如下:

一、核心原理

  1. LVS(Linux Virtual Server)
    • 作用:基于IP层(OSI第四层)实现高性能负载均衡,支持TCP/UDP协议(如HTTP、MySQL、Redis等)。
    • 工作模式
      • NAT模式:修改请求/响应的目标/源IP地址,需LVS作为网关,性能较低但配置简单。
      • DR模式(推荐):仅修改MAC地址,响应直接由后端服务器返回客户端,性能最高(大型网站主流选择)。
      • TUN模式:通过IP隧道封装请求,支持跨子网,但配置复杂。
    • 调度算法:支持轮询(rr)、加权轮询(wrr)、最小连接(wlc)等十种算法,可根据业务需求选择。
  2. Keepalived
    • 作用:基于VRRP协议实现高可用,管理LVS节点状态、VIP漂移及后端服务器健康检查。
    • 核心机制
      • 主备节点:主节点(MASTER)承载VIP,备节点(BACKUP)监听主节点状态,故障时自动接管VIP。
      • 健康检查:通过TCP端口检测、HTTP请求等方式监控后端服务器,故障时自动剔除并恢复后重新加入。
      • 优先级机制:主备节点配置不同优先级,主节点故障后,优先级高的备节点优先接管。

二、配置步骤(以DR模式为例)

1. 环境准备

  • 服务器角色
    • 2台LVS节点(主/备),安装ipvsadmkeepalived
    • 2台后端服务器(RealServer),部署Web服务(如Nginx/Apache)。
  • 网络要求
    • LVS节点与后端服务器在同一子网,且后端服务器需配置VIP的回环接口(lo:0)并禁用ARP响应。

2. LVS节点配置

  • 安装软件
     
    yum install ipvsadm keepalived -y
  • Keepalived主节点配置/etc/keepalived/keepalived.conf):
     
    global_defs {
     
    router_id LVS_MASTER
     
    }
     
    vrrp_instance VI_1 {
     
    state MASTER
     
    interface eth0
     
    virtual_router_id 60
     
    priority 100
     
    advert_int 1
     
    authentication {
     
    auth_type PASS
     
    auth_pass 1111
     
    }
     
    virtual_ipaddress {
     
    192.168.1.254/24 dev eth0
     
    }
     
    }
     
    virtual_server 192.168.1.254 80 {
     
    delay_loop 6
     
    lb_algo wlc
     
    lb_kind 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
     
    }
     
    }
     
    }
  • 备节点配置:修改stateBACKUPpriority为较低值(如90),其余参数与主节点一致。

3. 后端服务器配置

  • 绑定VIP到回环接口
     
    ip addr add 192.168.1.254/32 dev lo:0
  • 禁用ARP响应
     
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
     
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
     
    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
     
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

4. 启动服务

  • LVS节点
    bash
     
    systemctl start keepalived
     
    systemctl enable keepalived
  • 验证LVS规则
     
    ipvsadm -Ln

三、关键优势

  1. 高可用性:主备节点自动切换,故障恢复时间秒级,确保服务连续性。
  2. 性能优化:DR模式避免响应数据经过LVS,减轻负载均衡器压力,适合高并发场景。
  3. 灵活扩展:支持多业务隔离(如Web/数据库VIP独立管理)和混合负载均衡(LVS+纯VRRP实例)。
  4. 监控与日志:通过keepalived -S info查看状态,独立日志文件便于故障排查。

四、注意事项

  • 网络配置:确保LVS节点与后端服务器网络互通,且后端服务器不响应ARP请求。
  • 优先级设置:主备节点优先级差值建议≥10,避免频繁切换。
  • 健康检查:根据业务类型调整检查间隔(delay_loop)和超时时间(connect_timeout)。
  • 资源隔离:为不同实例分配独立CPU核心和内存限制,避免资源竞争。