集群类型
lvs-nat
修改请求报文的目标 IP,多目标 IP 的 DNAT
lvs-dr
操纵封装新的 MAC 地址
lvs-tun
在请求 IP 报文之外新加一个 IP 首部
lvs-fullnat
修改请求报文的源和目标 IP
本质是多目标 IP 的 DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS 的 RIP 和 PORT 实现转发
(1) RIP 和 DIP 应在同一个 IP 网络,且应使用私网地址;RS 的网关要指向 DIP
(2) 请求报文和响应报文都必须经由 Director 转发,Director 易于称为系统瓶颈
(3) 支持端口映射,可修改请求报文的目标 PORT
(4) VS 必须是 Linux 系统,RS 可以是任意 OS 系统
Direct Routing,直接路由,LVS 默认模式,应用最广泛,通过伪请求报文重新封装一个 MAC 首部进行转发,源 MAC 是 DIP 所在的接口的 MAC,目标 MAC 是某挑选出的 RS 的 RIP 所在接口的 MAC 地址;源 IP/PORT,以及目标 IP/PORT 均保持不便
(1) Director 和各 RS 都配置有 VIP
(2) 确保前端路由器将目标 IP 为 VIP 的请求报文发往 Director
* 在前端网关做静态绑定 VIP 和 Director 的 MAC 地址
* 在 RS 上使用 arptables 工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
* 在 RS 上修改内核参数以限制 arp 通告以及应答级别 # 最常用的 dr 模式方式,修改内核参数
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
(3) RS 的 RIP 可以使用私网地址,也可以是公网地址;RIP 的网关不能指向 DIP,以确保相应报文不会经由 Director
(4) RS 和 Director 要在同一个物理网络
(5) 请求报文要经由 DIrector,但相应报文不经由 Director,而由 RS 直接发往 Client
(6) 不支持端口映射 (端口不能修改)
(7) RS 可使用大多数 OS 系统 (需要修改内核参数)
转发方式:不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而在原 IP 报文之外再 封装一个IP首部(源 IP 是 DIP,目标 IP 是
RIP),将报文发往挑选出的目标 RS;RS 直接响应给客户端(源 IP 是 VIP,目标 IP 是 CIP)
(1) DIP, VIP, RIP都应该是公网地址
(2) RS 的网关一般不能指向 DIP
(3) 请求报文要经由 Director,但响应不经由 Director
(4) 不支持端口映射
(5) RS 的 OS 须支持隧道功能
lvs-fullnat:通过同时修改请求报文的源 IP 地址和目标 IP 地址进行转发
CIP --> DIP #源地址
VIP --> RIP #目标地址
(1) VIP 是公网地址,RIP 和 DIP 是私网地址,且通常不在同一 IP 网络;因此, RIP 的网关一般不会指向 DIP
(2) RS 收到的请求报文源地址是 DIP,因此,只需响应给 DIP;但 Director 还 要将其发往 Client
(3) 请求和响应报文都经由 Director
(4) 支持端口映射
注意:此类型kernel默认不支持,需要重新编译支持fullnat模式
LVS 工作模式总结
请求和响应报文都经由 Director
lvs-nat:RIP 的网关要指向 DIP
lvs-fullnat:RIP 和 DIP 未必在同一 IP 网络,但要能通信
请求报文要经由 Director,但响应报文由 RS 直接发往Client
lvs-dr:通过封装新的 MAC 首部实现,通过 MAC 网络转发
lvs-tun:通过在原 IP 报文外封装新 IP 头实现转发,支持远距离(跨互联网)通信
ipvs scheduler
根据其调度时是否考虑各 RS 当前的负载状态
两种:静态方法和动态方法
1、RR:roundrobin,轮询
2、WRR:Weighted RR,加权轮询
3、SH:Source Hashing,实现 session sticky,源 IP 地址 hash;将来自于同一个 IP 地址的请 求始终发往第一次挑中的 RS,从而实现会话绑定
4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至 RS,后续将发往同一个 目标地址的请求始终转发至第一次挑中的 RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商
- 动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
1、LC:least connections 适用于长连接场景应用
Overhead=activeconns(活动连接)*256+inactiveconns(非活动连接) #1个活动等于256非活动
2、WLC:Weighted LC,加权轮询,默认调度方法
Overhead=(activeconns*256+inactiveconns)/weight
3、SED:Shortest Expection Delay,初始连接高权重优先,权重越高的服务器Overhead值会越小
Overhead=(activeconns+1)*256/weight
4、NQ:Never Queue,第一轮均匀分配,后续SED
5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理
6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到 负载轻的RS
网友评论