LVS 负载

一、集群概述

1.1 集群介绍

集群是由一组相互独立、通过高速计算机网络互联的计算机组成的群体,以单一系统模式管理。客户与集群交互时,集群如同独立服务器。其特点包括高性能、高性价比、可扩展性、高可用性、负载均衡、错误恢复、透明性、可管理性和可编程性。

1.2 集群类型

  • 负载均衡集群:所有节点均活动,分摊工作负载,如 Web 服务器集群等,通过算法分配请求,充分利用各节点资源。
  • 高可用集群:保障应用程序持续对外服务,常见为 2 个节点的 HA 集群,有主从、互为主从、多台服务器主从等实现方式,节点间可共享存储资源。
  • 科学计算集群:提供强大计算能力,采用并行计算,分为时间计算(流水线技术)和空间计算(多处理器并发执行),适用于科学计算领域。

1.3 负载均衡技术类型

  • 四层负载均衡器:也称 4 层交换机,基于 IP 加端口实现负载均衡,如 LVS、F5 等。
  • 七层负载均衡器:也称 7 层交换机,位于应用层,可根据报文内容和算法选择后端服务器,如 HAProxy、Nginx。

1.4 负载均衡实现方式

  • 硬件负载均衡产品:F5、深信服、Radware。
  • 软件负载均衡产品:LVS(Linux Virtual Server)、Haproxy、Nginx、Ats(apache traffic server)。

二、LVS 介绍

LVS 即 Linux 虚拟服务器,是虚拟服务器集群系统,1998 年 5 月由章文嵩博士成立,是国内最早的自由软件项目之一,在 linux 2.6 内核中已成为一部分,之前版本需重新编译内核。使用 LVS 可构建可扩展的网络服务系统,相比单服务器升级,能通过添加服务器满足增长的负载需求,更具伸缩性和成本效益。

三、LVS 和 nginx 区别

  • LVS 抗负载能力更强,性能更高,对内存和 cpu 资源消耗低。
  • LVS 工作在网络层,流量由操作系统内核处理;nginx 工作在应用层,可针对 http 应用实施分流策略。
  • LVS 安装配置较复杂,网络依赖性大,稳定性高,不支持正则表达式,不能实现动静分离。
  • LVS 使用的协议范围广,Nginx 仅支持 HTTP、HTTPS、Email 协议,适用范围小。

四、LVS 相关术语

  • DS:前端负载均衡器节点。
  • RS:后端真实的工作服务器。
  • VIP:向外部直接面向用户请求的虚拟 IP 地址。
  • DIP:Director Server 用于和内部主机通讯的 IP 地址。
  • RIP:后端服务器的 IP 地址。
  • CIP:访问客户端的 IP 地址。

五、LVS 负载均衡算法

5.1 静态负载均衡

  • rr(轮询):按预定顺序轮流分配请求给后端服务器。
  • wrr(加权轮询):考虑后端服务器权重,权重高的接收更多请求。
  • sh(源地址散列算法):根据请求源 IP 地址通过散列函数确定分发的服务器。
  • dh(目标地址 HASH):根据请求目标 IP 地址进行散列分发。

5.2 动态负载均衡

  • lc(最少连接):将新请求分配给当前活跃连接数最少的服务器,算法为 active * 256 + inactive,值小者优先。
  • wlc(加权最少连接):算法为(active * 256 + inactive) /weight,值小者优先。
  • sed(最少期望延迟):算法为(active + 1) * 256 /weight,值小者优先。
  • nq(永不排队):无服务器过载时,请求直接发至空闲服务器;服务器达容量限制,新请求被拒绝。
  • LBLC(基于局部性的最少连接):考虑全局和服务器所在局部负载情况。
  • LBLCR(基于局部性的带复制功能的最少连接):在 LBLC 基础上,服务器过载时可复制流量到其他服务器。

六、三种 LVS 工作模式详解

1. 基于 NAT 的 LVS 模式负载均衡

1.1 工作原理

用户请求到达调度器,经 PREROUTING 链送至 INPUT 链,IPVS 检查为集群服务后,修改目标 IP 为 RIP 送 POSTROUTING 链转发给 Real Server;Real Server 构建响应报文发回调度器,调度器修改源 IP 为 VIP 后响应客户端。

1.2 特性

RS 使用私有地址,网关指向 DIP;DIP 和 RIP 在同一网段;请求和响应报文都经调度器,调度器易成瓶颈;支持端口映射;RS 可使用任意操作系统。

1.3 优点

物理服务器可使用任何支持 TCP/IP 的操作系统,只需在调度器配置一个 IP 地址,服务器组可用私有 IP。

1.4 缺点

伸缩能力有限,服务器节点过多时,负载均衡器会成为瓶颈。

2. 基于 TUN 的 LVS 负载均衡

2.1 实现原理

在原有 IP 报文外封装一层 IP 首部,客户端数据包到 LVS 后,经 PREROUTING 链至 INPUT 链,LVS 选择 RS 后转发至 OUTPUT 链,最终到达后端服务器;后端服务器拆封后处理并响应客户端。

2.2 优点

单臂模式,LVS 负载压力小;数据包修改小,信息完整性高;可跨机房。

2.3 缺点

不支持端口映射;需在 RS 安装模块及配置 VIP;隧道头部 IP 固定,RS 网卡可能不均匀;隧道头部可能导致分片影响性能。

2.4 使用场景

对转发性要求较高且有跨机房需求的场景。

3. LVS(DR)负载均衡

3.1 实现原理

客户端请求到 LVS,经 PREROUTING 链至 INPUT 链,LVS 确认是定义的服务后选择 RS,修改数据包 MAC 地址后发至 RS;RS 处理后通过 lo 接口传至 eth0 网卡响应客户端。

3.2 优点

响应数据不经过 LVS,性能高;对数据包修改小,信息完整性好。

3.3 缺点

LVS 与 RS 必须在同一物理网络;RS 上必须配置 lo 和其他内核参数;不支持端口映射。

3.4 使用场景

对性能要求高,且需要透传客户端源 IP 地址的场景。

七、IPVS 模块概述

1. IPVS 的介绍

IPVS 是高效的 Layer-4 交换机,提供负载平衡功能。初始 SYN 报文到达时选择服务器转发,后继报文根据 IP 和 TCP 报文头地址转发到相同服务器。要求后端服务器组提供相同服务,部分应用中后端服务器功能可不同,此时需基于内容请求分发。

2. IPVS 的工作原理

IPVS 是 LVS 的关键,实现 LVS 的 IP 负载平衡技术。安装在 Director Server 上,虚拟出 VIP,用户通过 VIP 访问服务,请求经 VIP 到负载调度器,再由其从 Real Server 列表选节点响应用户。LVS 分为内核空间的 IPVS 模块(工作在 Netfilter 框架的 input 链上)和用户空间的 ipvsadm 工具(用于定义集群服务并传送给 IPVS 模块)。

3. ipvsadm 命令

ipvsadm 命令用于管理 LVS 集群,包括添加、修改、删除集群服务和真实服务节点,查看规则,清空规则,设置超时值等。常见选项及作用如下:

选项 作用
-A 添加虚拟服务节点
-D 删除虚拟服务节点
-L 查看虚拟服务节点列表
-n 以数字形式显示查看内容
-a 添加真实服务节点
-d 删除真实服务节点
-l 查看真实服务节点列表
-t 指定虚拟服务器 IP 地址
-s 指定调度算法
-r 指定真实服务器节点 IP 地址
-w 指定权重值
-g 直接路由模式(默认)
-m NAT 模式
-i 隧道模式
相关推荐
哦你看看10 小时前
LVS-NAT、DR、TUN模式配置
lvs
Justin_191 天前
LVS负载均衡集群理论
java·负载均衡·lvs
一周困⁸天.3 天前
LVS-NAT模式配置
运维·负载均衡·lvs
rain bye bye17 天前
calibre LVS run不起来跑不通
lvs
rain bye bye18 天前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
2301_7873284920 天前
25.负载均衡-Nginx、HAProxy、LVS 全解析
nginx·负载均衡·lvs
小任今晚几点睡1 个月前
LVS深度解析:从原理到实战的负载均衡完全指南
负载均衡·lvs
Yyyy4821 个月前
LVS TUN隧道模式
运维·网络·lvs
IT成长日记1 个月前
【LVS入门宝典】LVS调度算法轮询(RR)深度解析:从原理到实战的公平调度之道
算法·lvs·rr·轮询调度算法