三、lvs的常用集群方式及其详解
1、lvs是由用户空间命令和工作在内核上的netfilter的INPUT链上钩子函数所组成,可根据用户自定义集群实现转发。
2、lvs术语
CIP:客服端使用的IP地址
VIP:虚拟服务器IP地址
DIP:director用于和Real server之间进行通信的IP地址
RIP:后端real server的IP地址
RS:real server
3、lvs类型
lvs-nat:lvs network address translation :lvs网络地址转换
lvs-dr:director routing 直连路由
lvs-tun:tuneling 隧道
lvs-fullnat:功能更加强大的网络地址转换
lvs-nat特性:
多源ip的目标地址转换,通过将请求报文中的目标地址和目标端口修改为从后端主机中挑选出的某RS的RIP和端口实现转发。
①RIP和DIP需在同一个网络中,且需使用私有地址,RS的网关需指向DIP,保证响应报文经过RS进行转发,此模型中VS容易成为单点故障,成为系统的瓶颈。
②请求报文和相应报文都经由Director进行转发
③支持端口映射
④VS需为Linux,RS可以是OS
LVS-DR特性:
通过为请求报文重新封装MAC地址进行转发,源MAC地址是DIP所在接口的MAC地址,目标MAC地址为调度器挑选出来的后端RS的MAC地址,IP首部不会发生改变。
①确保前端路由器将目标IP为vip的请求报文发往director
②RS的RIP可以是私网地址也可以是公网地址
③RS和director必须在同一个网络中
④请求报文必须经由调度器,但响应报文则一定不能有调度器转发,而是直接有real server响应客服端请求
⑤不支持端口映射,RS可使用OS
确保前端路由器将目标IP为vip的请求报文发往director
解决方案:
①在路由器上静态绑定VIP和director的MAC地址,禁止real server响应 arp请求,禁止RS的vip通告
②arptables
③修改RS的内核参数,并将VIP绑定lo的别名上,arp_ignore,arp_announce
限制响应级别:arp_announce
0:默认,把本机所有的接口信息向每个接口通告;
1:尽量避免向非本网络通告
2:总是避免;符合我们需要
限制通告级别:arp_ignore
0:默认使用本地任意接口上配置的地址进行响应
1:仅在请求的目标ip配置在本地主机的接口报文的接口上是,不给与响应
LVS-tun特性:
通过转发方式,不修改请求报文的ip首部,源ip为cip,目标ip为VIP,而是在源ip基础之上再封装一个ip首部,源ip为DIP,目标ip为调度器挑选的RS的VIP。
①RIP,DIP,VIP全为公网
②RS的网关不能指向DIP
③请求报文经由director转发,但响应报文直接发往CIP
④不支持端口映射
⑤RS必须支持隧道功能
LVS常用的调度算法:
静态的调度算法:
RR:Round Robin #轮询,轮转
WRR:Weighted Round Robin #加权轮询,根据后端每台real server的能承担的负载进行分配不同的请求个数
SH:Source Hashing #源地址哈希,将来自于同一台IP地址的请求发往同一台后端的real server服务器
DH:Destination Hashing #目标地址哈希,将发往同一个目标地址的请求始终发往前端调度器挑选出来的real server
动态的调度算法:
根据算法及其RS当前负载情况进行调度
LC:least connections,最少连接
WLC:weight least connections,加权最少连接
SED:shortest expections delay
NQ:never queue
LBLC:基于本地的最少连接
LBLCR:带复制功能的基于本地的最少连接
ipvs命令: