【LVS入门宝典】LVS核心原理与实战:Director(负载均衡器)配置指南

目录

引言

[1 LVS基础概念解析](#1 LVS基础概念解析)

[1.1 LVS架构概述](#1.1 LVS架构概述)

[1.2 LVS的三种工作模式](#1.2 LVS的三种工作模式)

[1.3 LVS调度算法](#1.3 LVS调度算法)

[2 环境准备与规划](#2 环境准备与规划)

[2.1 硬件与网络要求](#2.1 硬件与网络要求)

[2.2 软件要求与内核配置](#2.2 软件要求与内核配置)

[2.3 安装管理工具](#2.3 安装管理工具)

[3 LVS Director详细配置实战](#3 LVS Director详细配置实战)

[3.1 NAT模式配置](#3.1 NAT模式配置)

[3.2 DR模式配置](#3.2 DR模式配置)

[3.3 TUN模式配置](#3.3 TUN模式配置)

[4 高级配置与优化](#4 高级配置与优化)

[4.1 持久连接配置](#4.1 持久连接配置)

[4.2 健康检查配置](#4.2 健康检查配置)

[4.3 性能调优](#4.3 性能调优)

[5 监控与故障排除](#5 监控与故障排除)

[5.1 监控LVS状态](#5.1 监控LVS状态)

[5.2 常见故障排除](#5.2 常见故障排除)

[6 安全配置](#6 安全配置)

[7 总结](#7 总结)


引言

LVS系统由三大核心角色组成:Director(负载均衡器)、Real Server(真实服务器)和Shared Storage(共享存储)。其中,Director作为整个系统的流量入口和调度中心,负责接收客户端请求并根据预设的算法将其转发到后端的Real Server上。Director的配置直接影响整个负载均衡系统的性能和稳定性,因此掌握Director的配置技术至关重要。

1 LVS基础概念解析

1.1 LVS架构概述

LVS通过在操作系统内核层面实现负载均衡调度,能够处理极高的并发连接(理论上可达百万级别)。LVS系统采用分层架构:

  • 前端负载均衡层:由一台或多台Director服务器组成,负责请求分发
  • 中间服务器群层:由多台Real Server组成,实际处理业务请求
  • 后端共享存储层:为Real Server提供数据一致性保障

1.2 LVS的三种工作模式

LVS Director支持三种主要的工作模式,每种模式各有其适用场景和特点:
1. NAT(Network Address Translation)模式

  • 在NAT模式下,Director同时修改请求和响应数据包的地址信息,客户端请求到达Director时,Director将目标IP地址改为后端Real Server的IP
  • Real Server返回响应时,Director再将源IP地址改回VIP(Virtual IP),这种模式需要Director同时处理入站和出站流量,容易成为性能瓶颈
    2. TUN(IP Tunneling)模式
  • TUN模式通过IP隧道技术将客户端请求封装后转发给Real Server,Real Server直接响应客户端而不经过Director
  • 这种方式解耦了请求和响应路径,减轻了Director的压力,但需要Real Server支持隧道协议且具有公网IP
    3. DR(Direct Routing)模式
  • DR模式下,Director只修改请求数据包的MAC地址,将请求直接转发给Real Server,Real Server处理后直接响应客户端
  • 这是性能最高的一种模式,因为Director只处理入站请求,而出站响应由Real Server直接返回,但需要Real Server和Director在同一物理网络段,且Real Server需要配置ARP抑制

1.3 LVS调度算法

LVS提供了多种调度算法,用于决定如何将请求分发到后端Real Server:

  • 轮询(Round Robin):依次将请求分发到每台Real Server
  • 加权轮询(Weighted Round Robin):根据Real Server的权重比例进行分发
  • 最少连接(Least Connections):将请求发送到当前连接数最少的Real Server
  • 加权最少连接(Weighted Least Connections):考虑权重的最少连接算法
  • 基于局部性的最少连接(Locality-Based Least Connections):适用于缓存服务器场景
  • 目标地址散列(Destination Hashing):根据目标地址散列分配请求
  • 源地址散列(Source Hashing):根据源地址散列分配请求,可保持会话持久性

2 环境准备与规划

2.1 硬件与网络要求

在部署LVS Director前,需要合理规划硬件和网络环境:
硬件要求:

  • Director服务器:建议至少4核CPU、8GB内存、千兆网卡(高性能场景可使用万兆)
  • Real Server:根据实际应用需求配置,通常与Director网络互通
  • 网络设备:支持高速转发的交换机和路由器
    网络规划:
  • VIP(Virtual IP):192.168.10.100(对外提供服务的虚拟IP)
  • Director IP:192.168.10.30(Director服务器的真实IP)
  • Real Server IP段:192.168.10.31-192.168.10.35(后端服务器IP范围)
  • 网络拓扑:所有服务器需在同一局域网段,特别是DR模式

2.2 软件要求与内核配置

  • LVS已集成到Linux内核中,但需要确认相关模块可用:

    检查当前内核是否支持LVS

    grep -i "ip_vs" /boot/config-$(uname -r)

    查看已加载的IPVS模块

    lsmod | grep ip_vs

    加载IPVS模块(如果未加载)

    modprobe ip_vs
    modprobe ip_vs_rr
    modprobe ip_vs_wrr
    modprobe ip_vs_sh
    modprobe nf_conntrack_ipv4

    永久加载模块(添加到/etc/modules-load.d/ipvs.conf)

    echo "ip_vs" >> /etc/modules-load.d/ipvs.conf
    echo "ip_vs_rr" >> /etc/modules-load.d/ipvs.conf
    echo "ip_vs_wrr" >> /etc/modules-load.d/ipvs.conf
    echo "ip_vs_sh" >> /etc/modules-load.d/ipvs.conf
    echo "nf_conntrack_ipv4" >> /etc/modules-load.d/ipvs.conf

2.3 安装管理工具

  • 安装ipvsadm管理工具,用于配置和管理LVS规则:

    Ubuntu/Debian系统

    apt-get update
    apt-get install ipvsadm -y

    CentOS/RHEL系统

    yum install ipvsadm -y

    验证安装

    ipvsadm -L -n

3 LVS Director详细配置实战

3.1 NAT模式配置

配置步骤:

  • 启用IP转发

    临时启用

    echo 1 > /proc/sys/net/ipv4/ip_forward

    永久启用

    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p

  • 配置VIP

    添加VIP到网卡

    ip addr add 192.168.10.100/24 dev eth0

    验证配置

    ip addr show eth0

  • 创建虚拟服务器

    创建TCP虚拟服务器,使用轮询算法

    ipvsadm -A -t 192.168.10.100:80 -s rr

    添加Real Server

    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.31:80 -m
    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.32:80 -m
    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.33:80 -m

    查看配置

    ipvsadm -L -n

  • 保存配置

    保存当前规则(CentOS/RHEL)

    service ipvsadm save

    ipvsadm --save > /etc/sysconfig/ipvsadm

    Ubuntu/Debian

    ipvsadm-save > /etc/ipvsadm.rules

    设置开机自动加载规则

    echo "ipvsadm-restore < /etc/ipvsadm.rules" >> /etc/rc.local

3.2 DR模式配置

Director配置:

  • 配置VIP

    添加VIP到环回接口(避免响应ARP请求)

    ip addr add 192.168.10.100/32 dev lo

    设置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

  • 创建虚拟服务器

    创建虚拟服务器,使用加权最小连接算法

    ipvsadm -A -t 192.168.10.100:80 -s wlc

    添加Real Server(-g表示DR模式)

    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.31:80 -g -w 1
    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.32:80 -g -w 2
    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.33:80 -g -w 3

    查看配置

    ipvsadm -L -n --stats

  • Real Server配置(每台Real Server上都需要配置):

    添加VIP到环回接口

    ip addr add 192.168.10.100/32 dev lo

    设置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

    添加路由(确保响应包通过lo接口发出)

    route add -host 192.168.10.100 dev lo

3.3 TUN模式配置

Director配置:

  • 加载隧道模块

    modprobe ipip
    lsmod | grep ipip

  • 配置隧道接口

    创建隧道接口

    ip tunnel add tun0 mode ipip remote 192.168.10.31 local 192.168.10.30
    ip link set tun0 up
    ip addr add 192.168.10.100/24 dev tun0

  • 创建虚拟服务器

    创建虚拟服务器,使用最少连接算法

    ipvsadm -A -t 192.168.10.100:80 -s lc

    添加Real Server(-i表示TUN模式)

    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.31:80 -i
    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.32:80 -i

    查看配置

    ipvsadm -L -n --rate

  • Real Server配置:

    加载隧道模块

    modprobe ipip

    配置隧道接口

    ip tunnel add tun0 mode ipip remote 192.168.10.30 local 192.168.10.31
    ip link set tun0 up
    ip addr add 192.168.10.100/24 dev tun0

    启用隧道接口

    echo 1 > /proc/sys/net/ipv4/conf/tun0/forwarding

    设置ARP抑制

    echo 0 > /proc/sys/net/ipv4/conf/tun0/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/tun0/arp_announce

4 高级配置与优化

4.1 持久连接配置

  • 对于需要保持会话状态的应用,需要配置持久连接:

    配置持久连接,超时时间3600秒

    ipvsadm -A -t 192.168.10.100:80 -s rr -p 3600

    添加Real Server

    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.31:80 -m
    ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.32:80 -m

    查看持久连接配置

    ipvsadm -L -n --timeout

4.2 健康检查配置

  • LVS本身不提供健康检查功能,需要结合keepalived或其他工具实现:

    安装keepalived

    apt-get install keepalived -y # Ubuntu/Debian
    yum install keepalived -y # CentOS/RHEL

    配置keepalived(/etc/keepalived/keepalived.conf)

    vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    192.168.10.100
    }
    }

    virtual_server 192.168.10.100 80 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
    persistence_timeout 3600
    protocol TCP

    复制代码
      real_server 192.168.10.31 80 {
          weight 1
          TCP_CHECK {
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
      
      real_server 192.168.10.32 80 {
          weight 2
          TCP_CHECK {
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }

    }

4.3 性能调优

  • 针对高性能场景,需要对LVS和系统内核进行调优:

    增加系统文件描述符限制

    echo "* soft nofile 65535" >> /etc/security/limits.conf
    echo "* hard nofile 65535" >> /etc/security/limits.conf

    调整内核网络参数

    echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
    echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
    echo "net.core.netdev_max_backlog = 65535" >> /etc/sysctl.conf

    应用配置

    sysctl -p

    调整IPVS连接哈希表大小(对于大量并发连接)

    echo "net.ipv4.vs.conn_tab_bits=20" >> /etc/modprobe.d/ipvs.conf

5 监控与故障排除

5.1 监控LVS状态

  • 定期监控LVS运行状态是确保服务稳定的关键:

    查看当前连接统计

    ipvsadm -L -n --stats

    查看连接速率统计

    ipvsadm -L -n --rate

    查看实时连接信息

    ipvsadm -L -n --connections

    查看持久连接信息

    ipvsadm -L -n --persistent-conn

    结合watch命令实时监控

    watch -n 1 'ipvsadm -L -n --stats'

5.2 常见故障排除

  • 问题1:客户端无法连接到VIP

  • 排查步骤:

    检查VIP是否配置正确

    ip addr show

    检查IP转发是否启用

    cat /proc/sys/net/ipv4/ip_forward

    检查防火墙规则

    iptables -L -n

    检查路由表

    route -n

  • 问题2:Real Server无法接收请求

  • 排查步骤:

    检查Director到Real Server的网络连通性

    ping 192.168.10.31

    检查Real Server服务是否正常

    curl -I http://192.168.10.31

    检查LVS规则是否正确

    ipvsadm -L -n

    检查ARP抑制设置(DR模式)

    cat /proc/sys/net/ipv4/conf/all/arp_ignore

  • 问题3:性能瓶颈

  • 排查步骤:

    查看系统负载

    top
    htop

    查看网络流量

    iftop
    nethogs

    查看连接状态统计

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    查看内核日志

    dmesg | grep ip_vs

6 安全配置

  • 合理配置防火墙是保障LVS安全的重要措施:

    只开放必要端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH管理端口
    iptables -A INPUT -j DROP # 默认拒绝所有其他入站连接

    允许VIP相关流量

    iptables -A INPUT -d 192.168.10.100 -j ACCEPT

    保存iptables规则

    iptables-save > /etc/iptables/rules.v4 # Ubuntu/Debian
    service iptables save # CentOS/RHEL

7 总结

  • LVS Director作为负载均衡系统的核心组件,其正确配置和优化对整个系统的性能和稳定性至关重要
  • LVS是一个强大而灵活的负载均衡解决方案,掌握其配置技术对于构建高性能、高可用的网络服务具有重要意义
相关推荐
失因4 小时前
LVS 负载均衡技术
运维·负载均衡·lvs
sszdzq4 小时前
docker安装canal-server(v.1.1.8)【mysql->rabbitMQ】
运维·docker·容器
维尔切4 小时前
lVS 负载均衡技术
运维·负载均衡·lvs
神秘人X7074 小时前
LVS 负载均衡
运维·负载均衡·lvs
Akshsjsjenjd4 小时前
LVS:Linux 内核级负载均衡的架构设计、三种工作模式与十大调度算法详解
linux·负载均衡·lvs
再睡亿分钟!4 小时前
思考:客户端负载均衡和服务器负载均衡有什么区别?
java·开发语言·微服务·负载均衡
安审若无4 小时前
从root用户切换到某个普通用户突然报错“su: failed to execute /bin/bash: 资源暂时不可用”
linux·bash
九河云5 小时前
华为云 ELB:智慧负载均衡,让您的应用永葆流畅体验
运维·服务器·科技·华为云·负载均衡
上海文顺负载箱5 小时前
燃料电池负载均衡测试:解锁高效供能密码
运维·负载均衡·燃料电池