前言
集群:将多台主机组织起来统一调度,满足某一特定需求。
集群类型:
1)LB:Load Balancing 负载均衡集群;
2)HA:High Availability 高可用集群;
3)HP:High Performance 高性能集群;
4)DS:Distributed System 分布式系统;
LB集群的软件实现:lvs
lvs:Linux Virtual Server(四层交换,四层路由)
根据调度算法将请求报文的目标IP和目标PORT转发至后端主机集群中的某台服务器;
lvs集群的术语:
vs:Virtul Server
rs:Real Server
CIP:Client IP
VIP:Director Virtual IP
DIP:Director IP
RIP:Real Server IP
lvs的实现:
ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;
ipvs:工作于内核上的netfilter INPUT钩子之上的程序代码;
(其集群的功能依赖于ipvsadm定义的集群服务器规则)
LVS-TYPE:
(1)lvs-nat:MASQUERADE
多目标的DNAT:通过将请求报文的目标地址和目标端口修改为挑选出的某RS的RIP和PORT来实现
①RIP和DIP应该使用私网地址,RS的网关应该指向DIP;
②请求和响应报文都要经由director转发;极高负载的场景中,Director可能会成为系统瓶颈
③支持端口映射;
④vs必须为Linux,RS可以为任意OS;
⑤RS的RIP与Director的DIP必须在同一IP网络中;
(2)lvs-dr:GATEWAY
通过修改请求报文的MAC地址进行转发,IP首部不会发生变化(源IP始终为CIP,目标IP始终为VIP);
①确保前端路由器将目标IP为VIP的请求报文一定会送给Director;
解决方案:静态绑定;
禁止RS响应VIP的ARP请求;
a)arptables;
b)修改各RS的内核参数,并把VIP配置在特定的接口上实现禁止其响应;
②RS的RIP可以使用私有地址,也可以使用公网地址;
③RS跟Director必须在同一物理网络中;
④请求报文必须由Director调度,但响应报文必须不能经过Director;
⑤不支持端口映射;
⑥各RS支持大多数的OS;
(3) lvs-tun:IPIP
不修改请求报文的ip首部,而是在原有的ip首部之外再次封装一个ip首部;
①RIP,DIP,VIP必须都是公网地址;
②RS网关不能指向DIP
③请求报文经由Director调度,但响应报文将直接发给CIP;
④不支持端口映射;
⑤RS的OS必须支持ip隧道功能;
(4)lvs-fullnat
通过同时修改请求报文的源ip和目标ip实现转发;
①VIP是公网地址;RIP和DIP是私网地址,且可以不在同一IP网络中,但需要通过路由互相通信;
②RS收到请求报文的源IP为DIP,因此其响应报文将发送给DIP;
③请求报文和响应报文都必须经由DIrector;
④支持端口映射;
⑤RS可使用任意OS;
lvs scheduler(lvs的调度方法):当用户请求到达时必须调度请求到后端的real server
(1)静态方法:仅根据算法本身调度,而不考虑当前的RS的负载状态;
1)RR:round robin,轮调;
2)WRR:weighted rr,加权轮调;(根据RS负载能力进行调度,权重大的负载多;)
3)SH:source ip hash,源地址哈希;(session绑定的方式,在director上维护一张键值对hash表,源ip地址为键,RS的IP为值,当请求到达时,可以根据hash表来查找源ip曾经到达的RSip,并将请求发往同一个RS,当请求到达时没有hash记录就使用加权轮调的算法调度RS;缺点:粒度过大,过于粗糙,久而久之会损坏负载均衡的效果)
4)DH:desination ip hash,目标地址哈希;(正向web代理,负载内网用户对互联网的请求;Client-->Director-->Web Cache Server)
(2)动态方法:根据算法及各RS当前的负载状态进行评估;
基于Overhead(负载值),值小的优先调度;
1)LC:least connection(最少连接)
Overhead=Active*256+Inactive
2)WLC:weighted LC
Overhead=(Active*256+Inactive)/weight
3)SED:Shortest Expection Delay(最短期望延迟)
Overhead=(Active+1)*256/weight
4)NQ:Nerver Queue(永不排队,SED算法的改进)
先按照权重由高到低各调度一个请求,再使用SED算法进行统一调度
5)LBLC:Locality-Based LC(基于本地的最少连接)
动态的DH算法;
Client-->Director-->Web Cache Server(正向代理)
6)LBLCR:LBLC with Replication,带复制功能的LBLC;
(每个算法的出现都是为了弥补上一个算法的缺陷)
lvs persistence:持久连接
功能:无论ipvs使用何种调度算法,其都能实现在指定时间范围内始终将来自于同一个ip地址的请求发往同一个RS;此功能是通过lvs持久连接模版(持久连接hash表)实现,其与调度算法无关;
模式:
每端口持久(ppc)
每客户端持久(pcc)
每FWM持久(PFWMC)
原文:http://tz666.blog.51cto.com/10990100/1740266