1.什么是集群:
2.集群分类
3.Ivs的作用
4.Ivs的4种模式及原理
5.Ivs的13种算法方案 2:sh 源地址哈希调度
使用静态 sh 算法,基于客户端源 IP 哈希永久绑定 RS,适合固定公网 IP 用户。
6.Ivs的多端口轮询问题解决方案
7.Ivs的会话粘滞解决方案
1.集群是将多台独立服务器通过网络组合成一个整体对外提供服务,对外表现为单一虚拟节点,分担流量、提升并发、实现故障容错,单台机器宕机不影响整体业务。
2.集群分为LB 负载均衡集群、HA 高可用集群、HP 高性能集群四层转发。工作在 TCP/IP 四层,仅处理 IP + 端口,不解析 HTTP 应用层,转发速度极快,百万级并发无压力
流量调度:接收用户请求,根据调度算法转发给后端真实服务器 RS
虚拟 IP 对外:统一 VIP 对外提供服务,用户只访问虚拟 IP,无感知后端多台机器
健康检测:配合 Keepalived 自动下线故障后端节点
高吞吐低消耗:内核转发不占用用户进程 CPU,性能远超七层 Nginx
3。LVS是内核级四层负载均衡,由章文嵩博士开发,集成在 Linux 内核 ipvs 模块。
4.模式 1:NAT 网络地址转换
原理
用户请求:客户端 IP → LVS-VIP
调度器修改数据包目标 IP为后端 RS 内网 IP,转发给真实服务器
RS 回包:源 IP 是内网 RSIP,数据包必须经过 LVS 调度器
调度器修改回包源 IP为 VIP,返回客户端
模式 2:DR 直接路由
原理
请求报文:客户端→LVS-VIP,调度器仅修改二层 MAC 地址,转发给 RS
RS 本地配置 VIP 环回网卡,接收目标为 VIP 的数据包处理
响应报文不经过 LVS:RS 直接把数据包回复给客户端,流量分离
模式3:TUN IP 隧道
原理
LVS 将用户原始 IP 数据包封装一层新 IP 隧道头,转发给跨网段 RS
RS 解封装隧道,识别内部 VIP 数据包处理
RS 直接回包客户端,不经过 LVS
模式 4:FULLNAT 全网络地址转换
原理(内核 3.2 + 新增)
请求:LVS 同时修改源 IP + 目标 IP,客户端 IP 转为调度器内网 IP,目标 VIP 改为 RSIP
回包:RS 回复调度器内网 IP,调度器再转换源 VIP、目标客户端 IP 返回
5.分为静态算法和动态算法
一、静态调度(4 种)
rr 轮询:请求依次平均分给每台 RS,不考虑服务器性能差异
wrr 加权轮询:给 RS 配置权重,权重越高分到请求越多
dh 目标地址哈希:根据客户端目标 IP 哈希,同一 IP 固定分配同一 RS
sh 源地址哈希:根据客户端源 IP 哈希,同一个用户 IP 永远访问同一 RS
二、动态调度(9 种,自动感知负载)
lc 最小连接:优先分配给当前活跃连接数最少的 RS
wlc 加权最小连接:活跃连接 / 权重比值最小的 RS 优先分配,生产最常用
lblc 基于本地最小连接:目标 IP 哈希 + 最小连接,缓存业务专用
lblcr 带复制本地最小连接:lblc 升级,支持缓存复制
sed 最短预期延迟:(连接数 + 1)*1000 / 权重,数值越小优先分配
nq 永不排队:空闲 RS 直接分配,无空闲再走 sed 算法
fo 加权故障:检测 RS 故障次数,故障多的降低分配优先级
ovf 溢出调度
pe 持久化均衡:会话持久专用调度
6.方案 1:fwmark 防火墙标记
iptables 给所有业务端口统一打上相同标记
iptables -t mangle -A PREROUTING -d 192.168.1.10 -p tcp --dport 80 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -d 192.168.1.10 -p tcp --dport 443 -j MARK --set-mark 10
ipvs 基于标记创建一条虚拟服务,不再区分端口
ipvsadm -A -f 10 -s wlc
ipvsadm -a -f 10 -r 192.168.1.2:80 -g
ipvsadm -a -f 10 -r 192.168.1.3:80 -g
方案 2:统一源哈希 sh 调度
每条端口规则配置 sh 源哈希,同一客户端 IP 固定分配同一 RS,缺点:哈希倾斜,流量不均。
7.方案 1:ipvs 持久化连接
创建虚拟服务时添加 -p
ipvsadm -A -t 192.168.1.10:80 -s wlc -p 300
方案 2:sh 源地址哈希调度
使用静态 sh 算法,基于客户端源 IP 哈希永久绑定 RS,适合固定公网 IP 用户。
方案 3:fwmark 多端口 + 持久化
多端口业务结合防火墙标记 + 持久化,80/443 共用会话绑定。
方案 4:应用层统一会话存储
不依赖 LVS 会话保持,后端所有 RS 共享 session 存储:Redis/Memcached 统一存放登录会话,所有机器读取同一会话数据,完美规避四层粘滞缺陷,分布式系统标准方案。