LVS 负载均衡

type
status
date
slug
summary
tags
category
icon
password

一、集群技术概述

notion image

1. 集群类型

  • 负载均衡集群(Load Balance, LB):提升业务并发处理能力。
    • notion image
  • 高可用集群(High Availability, HA):避免单点故障,保障服务连续性。

2. 负载均衡技术

  • 目的:提升系统并发处理能力。
  • 扩展方式
    • Scale In(纵向扩展):提升单机性能。
    • Scale Out(横向扩展):增加服务器数量。
  • 实现方式
    • 软件:LVS、Nginx(upstream)、HAProxy
    • 硬件:F5

3. 高可用技术

  • 机制:主备角色通过心跳检测实现故障切换。
  • 软件实现:Keepalived
    • heartbeat、pacemaker、ultramonkey
notion image
脑裂
  • ----- 什么是脑裂(split-brain)
在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,两个节点上的HA软件像"裂脑人"一样,"本能"地争抢"共享资源"、争起"应用服务"。就会发生严重后果:1)或者共享资源被瓜分、两边"服务"都起不来了;2)或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联机日志出错)。
两个节点相互争抢共享资源,结果会导致系统混乱,数据损坏。对于无状态服务的HA,无所谓脑裂不脑裂,但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂
[但有些生产环境下的系统按照无状态服务HA的那一套去配置有状态服务,结果就可想而知]。
  • ----- 集群脑裂产生的原因
一般来说,裂脑的发生,有以下几种原因:
1. 高可用服务器各节点之间心跳线链路发生故障,导致无法正常通信。
2. 因心跳线坏了(包括断了,老化)。
3. 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)。
4. 因心跳线间连接的设备故障(网卡及交换机)。
5. 因仲裁的机器出问题(采用仲裁的方案)。
6. 高可用服务器上开启了iptables防火墙阻挡了心跳消息传输。
7. 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
8. 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。

二、LVS(Linux Virtual Server)介绍

1. 基本概念

  • 由章文嵩博士开发,集成在 Linux 内核中的负载均衡模块。

2. 负载均衡算法

算法
说明
rr
轮询(Round Robin)
wrr
加权轮询(Weighted RR)
lc
最少连接(Least Connections)
wlc
加权最少连接(默认)
sh
源 IP Hash,保持会话持久
轮询法
notion image
加权轮询法
notion image
源地址哈希法
notion image
最少连接数法
notion image

三、LVS 工作模式

1. NAT 模式

  • 特点:请求和响应都经过调度器。
  • 注意事项
    • VIP 和 DIP 需属于不同网段。
    • 调度器需开启路由转发。
    • Real Server 的网关需指向 DIP。
notion image

2. DR 模式(直接路由)

  • 特点:请求经过调度器,响应由 Real Server 直接返回客户端。
  • 注意事项
    • 所有 Real Server 需配置 VIP。
    • 需设置 arp_ignore=1arp_announce=2 避免 ARP 冲突。
notion image

3. TUN 模式(隧道模式)


四、LVS 配置示例

NAT 模式配置步骤:

notion image
notion image
  1. Real Server 网关指向 DIP
    1. 安装 ipvsadm
      1. 开启路由转发
        1. 创建虚拟服务
          1. 添加 Real Server
            1. 查看状态

              DR 模式配置步骤:

              1. Real Server 配置 VIP(32位掩码)
                1. 设置 ARP 参数
                  1. 调度器配置 VIP
                    1. 创建虚拟服务并添加 Real Server

                      五、持久性连接(Session Persistence)

                      • 作用:一段时间内将同一客户端请求转发到同一台 Real Server。
                      • 配置示例

                        六、注意事项

                        1. DR 模式中 VIP 配置
                            • VIP 应配置在 lo 接口,掩码为 /32,避免 IP 冲突。
                        1. ARP 参数说明
                            • arp_ignore=1:仅响应目标IP为本机接口的ARP请求。
                            • arp_announce=2:总是使用最佳本地IP进行ARP响应。

                        七、总结

                        • LVS 是内核级负载均衡解决方案,支持 NAT/DR/TUN 三种模式。
                        • DR 模式性能最优,但需注意 ARP 配置。
                        • 持久连接可用于会话保持。
                        • 高可用需配合 Keepalived 等工具实现。
                        Loading...