注意:本文主要是对于LB中的lvs 做讲解(centos6.5-x86_64系统)
一、集群基本概念:
集群是把一组相互独立的、通过高速网络互联的计算机,把它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
1.1.常见的服务器扩展方式:
Scale Up: 向上扩展 添加配置
Scale Out: 向外扩展 添加服务器
1.2.集群分类
负载均衡集群:Load Balancing Cluster,LB
高可用集群:High Availiablity, HA
高性能集群:High Perfomance: HP
高性能集群一般常见于(并行处理系统:Hadoop)
1.3. LB:负载均衡
软件:
tcp(内核空间): linux上的lvs
应用层(用户空间):nginx, haproxy, apache, lighttpd, varnish, squid ...
硬件:BigIP(F5), Netscaler(Citrix), A10 ...
二、LVS(linux virtual server) linux虚拟服务器软件
2.1.CIP<-->VIP<-->DIP<-->RIP
CIP 客户端IP
VIP 外网访问内部LB地址
DIP 集群设备地址
RIP 内网服务器的IP地址
2.2.lvs类型
NAT、DR、TUN、FUllNAT
2.2.1.NAT
NAT: 实际场景中很少有企业使用NAT
1、RealServer应该使用私有IP地址;
2、RealServer的网关应该指向DIP;
3、RIP和DIP应该在同一个网段内;
4、进出的报文都得经过Directory,在高负载下,Directory会成为系统性能瓶颈;
5、支持端口映射;
6、RealServer可以使用任意OS;
2.2.2.DR
DR: Direct Routing
1、RealServer可以使用私有地址;
2、RealServer的网关一定不能指向DIP;
3、RealServer和Director要在同一物理网络内;DIP和RIP应该在同一网段;
4、入站报文经过Directory,出站则由RealServer直接响应Client;
5、不能做端口映射;
6、RealServer可以为大多数常见OS;
2.2.3.TUN
TUN:Tunneling
1、RIP、DIP不能是私有地址;
2、RealServer的网关不能指向DIP;
3、入站报文经过Directory,出站则由RealServer直接响应Client;
4、不支持端口映射;
5、支持IP tunneling的OS才能用于RealServer;
2.2.4.FULLNAT
FULLNAT:在NAT基础上做了目标地址与原地址转换.
模型图如下:
2.3.LVS调度方法
静态(fixed method):
rr, wrr, sh, dh
rr:伦叫
wrr:加权轮叫
sh: Source Hashing 原地址哈希
dh: Destination Hashing 目标地址哈希 用于缓存
动态(Dynamic method):
lc, wlc, sed, nq, lblc, lblcr
lc: Least Connection 最小连接
算法:Overhead=Active*256+Inactive
wlc: Weighted Least Connection 加权最小连接
算法:Overhead=(Active*256+Inactive)/Weight
sed: Shortest Expect Delay 最少期望延迟
算法:Overhead=(Active+1)*256/Weight
nq: Never Queue 永不排队
lblc: (dh+lc) Locality-based Least Connection 基于本地的最少连接
lblcr: Replicated and Locality-based Least Connection 基于本地的带复制的最少连接
......