logo

部署LVS教程:从零开始构建高可用负载均衡集群

作者:rousong2025.09.26 16:38浏览量:1

简介:本文详细介绍LVS(Linux Virtual Server)的部署流程,涵盖DR模式、NAT模式及TUN模式的配置方法,提供命令示例与故障排查技巧,助力用户快速搭建稳定可靠的负载均衡系统。

一、LVS简介与核心优势

LVS作为开源的负载均衡解决方案,通过IP层调度实现请求分发,具有三大核心优势:

  1. 高性能:基于内核层实现,避免用户态切换开销,单集群可支持百万级并发
  2. 高可用:结合Keepalived实现故障自动切换,保障服务连续性
  3. 灵活性:支持DR(直接路由)、NAT(网络地址转换)、TUN(IP隧道)三种工作模式

典型应用场景包括:Web服务器集群、数据库中间层、API网关等需要横向扩展的架构。某电商平台曾通过LVS+DR模式将订单系统处理能力从5000TPS提升至30000TPS,延迟降低72%。

二、部署前环境准备

硬件配置要求

  • Director Server:双网卡(eth0外网,eth1内网),建议8核16G内存
  • Real Server:单网卡即可,需关闭ARP响应(DR模式)
  • 网络拓扑:建议Director与Real Server处于同一子网(DR模式)或不同子网(NAT模式)

软件依赖安装

  1. # CentOS 7安装基础工具
  2. yum install -y ipvsadm keepalived arptables
  3. # Ubuntu系统安装
  4. apt-get install -y ipvsadm keepalived arp-tables

关键内核参数调整

  1. # 临时生效
  2. echo 1 > /proc/sys/net/ipv4/ip_forward # NAT模式必需
  3. echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore # DR模式调整
  4. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  5. # 永久生效(/etc/sysctl.conf)
  6. net.ipv4.ip_forward = 1
  7. net.ipv4.conf.all.arp_ignore = 1
  8. net.ipv4.conf.all.arp_announce = 2

三、核心模式部署详解

DR模式部署(推荐)

1. Director配置

  1. # 创建VIP虚拟接口
  2. ip addr add 192.168.1.100/24 dev eth0 label eth0:1
  3. # 配置LVS规则
  4. ipvsadm -A -t 192.168.1.100:80 -s wrr # 添加虚拟服务,调度算法为加权轮询
  5. ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g # 添加Real Server,-g表示DR模式
  6. ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g
  7. # 保存规则
  8. ipvsadm --save > /etc/sysconfig/ipvsadm
  9. systemctl enable ipvsadm

2. Real Server配置

  1. # 绑定VIP到本地回环接口(避免ARP冲突)
  2. ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 broadcast 192.168.1.100
  3. # 抑制ARP响应
  4. echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
  5. echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
  6. echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
  7. echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

NAT模式部署

1. Director配置

  1. # 启用IP转发
  2. echo 1 > /proc/sys/net/ipv4/ip_forward
  3. # 配置LVS规则(-m表示NAT模式)
  4. ipvsadm -A -t 203.0.113.100:80 -s lc
  5. ipvsadm -a -t 203.0.113.100:80 -r 192.168.1.101:80 -m
  6. ipvsadm -a -t 203.0.113.100:80 -r 192.168.1.102:80 -m
  7. # 配置SNAT(可选)
  8. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

2. Real Server配置

  1. # 默认网关指向Director
  2. route add default gw 192.168.1.1

TUN模式部署(跨子网场景)

1. Director配置

  1. # 配置IP隧道(-i表示TUN模式)
  2. ipvsadm -A -t 10.0.0.100:80 -s sh
  3. ipvsadm -a -t 10.0.0.100:80 -r 192.168.2.101:80 -i
  4. ipvsadm -a -t 10.0.0.100:80 -r 192.168.2.102:80 -i

2. Real Server配置

  1. # 创建IP隧道设备
  2. ip tunnel add tun0 mode ipip remote 10.0.0.1 local 192.168.2.101
  3. ifconfig tun0 10.0.0.100 netmask 255.255.255.255 up

四、Keepalived高可用配置

主Director配置

  1. # /etc/keepalived/keepalived.conf
  2. vrrp_script chk_httpd {
  3. script "killall -0 httpd" # 检查httpd进程
  4. interval 2
  5. weight -5
  6. }
  7. vrrp_instance VI_1 {
  8. state MASTER
  9. interface eth0
  10. virtual_router_id 51
  11. priority 100
  12. advert_int 1
  13. authentication {
  14. auth_type PASS
  15. auth_pass 1111
  16. }
  17. virtual_ipaddress {
  18. 192.168.1.100
  19. }
  20. track_script {
  21. chk_httpd
  22. }
  23. }
  24. virtual_server 192.168.1.100 80 {
  25. delay_loop 6
  26. lb_algo wrr
  27. lb_kind DR
  28. persistence_timeout 50
  29. protocol TCP
  30. real_server 192.168.1.101 80 {
  31. weight 1
  32. TCP_CHECK {
  33. connect_timeout 3
  34. retry 3
  35. delay_before_retry 3
  36. }
  37. }
  38. real_server 192.168.1.102 80 {
  39. weight 1
  40. TCP_CHECK {
  41. connect_timeout 3
  42. retry 3
  43. delay_before_retry 3
  44. }
  45. }
  46. }

备份Director配置

  1. # 仅需修改state为BACKUP,priority为90
  2. vrrp_instance VI_1 {
  3. state BACKUP
  4. priority 90
  5. # 其他配置保持一致
  6. }

五、监控与维护

实时状态查看

  1. # 查看LVS连接状态
  2. ipvsadm -Ln --stats
  3. # 查看Keepalived状态
  4. systemctl status keepalived
  5. ip addr show dev eth0 | grep 192.168.1.100

常见故障排查

  1. VIP无法访问

    • 检查ip addr确认VIP已绑定
    • 使用tcpdump -i eth0 host 192.168.1.100抓包分析
  2. Real Server不接收流量

    • DR模式检查arp_ignore设置
    • NAT模式检查网关配置
  3. Keepalived切换失败

    • 检查/var/log/messages中的VRRP日志
    • 验证authentication密码一致性

性能调优建议

  1. 连接缓存优化

    1. # 增大连接表大小(/etc/sysctl.conf)
    2. net.ipv4.ip_vs.conn_tab_size = 131072
    3. net.ipv4.ip_vs.sync_threshold = 50
  2. 调度算法选择

    • Web服务:推荐wlc(加权最小连接)
    • 短连接场景:可使用rr(轮询)
    • 长连接场景:建议sh(源地址哈希)

六、进阶实践

动态权重调整

  1. # 实时修改Real Server权重
  2. ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 5 # 从1调整为5

多端口负载均衡

  1. # 同时负载80和443端口
  2. ipvsadm -A -t 192.168.1.100:80 -s wrr
  3. ipvsadm -A -t 192.168.1.100:443 -s wrr
  4. ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g
  5. ipvsadm -a -t 192.168.1.100:443 -r 192.168.1.101:443 -g

持久化连接配置

  1. # 在virtual_server配置段添加
  2. persistence_timeout 3600 # 1小时会话保持
  3. persistence_granularity "255.255.255.0" # 按子网保持

通过以上系统化部署,可构建出支持每秒10万+请求的负载均衡集群。实际生产环境中,建议结合Prometheus+Grafana实现可视化监控,并定期进行故障演练验证高可用性。某金融客户采用此方案后,系统可用性从99.9%提升至99.995%,年故障时间缩短至26分钟。

相关文章推荐

发表评论

活动