集群:组合多台计算机完成同一种任务,这种多台计算机的组合叫做集群,Cluster

一、三类集群:
 
LB:Load Balancing ,负载集群(扩展服务容量)】
    即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
    软件实现方法:LVS
HA:High Availability,高可用集群(提高服务可用性)】
    利用集群治理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
    软件实现方法:heartbeat,corosync
HP:High Performance ,高性能集群(提高并发处理能力)】
    即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。。
    软件实现方法:hadoop
二、【负载均衡的集群】
 

集群入门浅析---LVS

在提供服务器的前端提供一个中间层,能够实现将用户请求接收下来,并且通过某种标准或者某种衡量方式,将用户的请求依次转交给内部服务器,这个中间层即是Director负载均衡器,它既可以是一个硬件,也可以是安装在某操作系统上的某个软件。
特点:
负载均衡的性能比较佳,可以通过添加或移除来扩展或伸缩后端服务器。
前端的Director要能够对后端服务器进行健康状态检测
 
在负载均衡集群模式中,Director的常见解决方案:
硬件级别:
F5:BigIP 1000W(并发处理能力)
Citix:Netscaler,500W
IBM: A10,600W
 
软件级别:
LVS(Linux Virtual Server) 400W:其应用最为广泛
Haproxy
 
相对于一个企业来说,数据往往是最重要的,通常,数据存储的方式主要有三种:
DAS:Direct Attached Storage直接附加存储
NAS:Network Attached Storage网络附加存储
SAN: Storage Area Network存储区域网络
 
这三种方式都能为我们的主机提供额外的存储空间,我们的主机都有一个自己的存储设备,但是为了保证数据的可靠性,可以把它连到一个外部存储设备上,如以上三种。
 
【DAS】
外部的磁盘,它需要直接附加在主机的主板的总线上才可以工作,速度比较快
【NAS】
可以理解为文件共享服务器,内部有个空间较大的存储设备,通过nfs共享出来,供我们的主机使用,它是通过网线和我们主机联系起来的。
【SAN】
是一个模拟SCSI的磁盘设备,它本身带有控制器,大多数的数据传输可以自我实现,不用依赖cpu,SAN机制是通过另外一种网络协议将SCSI的协议数据单元通过另外一种传输设备传输,并且能够最终送达至SCSI磁盘上进行数据存储的技术方式。最常用的是 FC SAN:光通道SAN
但是FC SAN 消费太高,于是就出现了另外一种IP SAN:通过以太网卡将SCSI封装到TCP/IP协议里面,而后通过TCP/IP网络传输给以太网交换机,由交换机送给存储设备。它所使用的协议是iscsi(internet scsi)
SAN所输出的数据是块级别的,客户端识别的SAN是一个独立的磁盘设备,可以分区、格式化。
 
但是在负载均衡这种模式中,如果Director损坏,后果将不堪设想,所以我们就引入了第二种类型:高可用的集群。
 
三、【高可用集群】
 
我们通常用平均无故障时间或者平均修复时间来衡量一个高可用的集群高可用能力,衡量指标有99% 99.9% 99.999%
 
高可用集群的工作模式:
我们在Director旁边再添加一块Director做冗余备份,当之前的Director损坏了,它就会代替其位置继续提供服务来保证我们的服务不中断。综合来说就是将一个特定的资源从一个故障的服务器上转移到健康的服务器上的过程。
 
那么冗余Director是怎么知道Director出现故障的???
高可用集群有一个信息层,在该层中定义了每个集群内成员的信息,每个主机都要向其备用Director传递心跳信息,备用主机就是通过心跳信息来探测Director是否损坏的。
 
四、在这里首先详细介绍下负载均衡集群的实现:LVS
 
【LVS( Linux Virtual Server):linux虚拟服务器】
LVS主要是作为前端的Director而存在的,它本身并不提供服务,而是将用户的请求一并转发给后端,由后端真正的服务器(Real Server,我这里以后简写为RS)来响应客户的请求。
LVS的逻辑架构:
前端服务器:Director
    它是工作在TCP/IP协议栈的4层来实现其功能的,根据客户端请求的端口和地址来转发服务。
后台服务器:Real Server
共享存储:数据存储服务器
 
关于集群涉及到的IP:
VIP:Director用来向客户端提供服务的IP地址
RIP:RS的IP地址
DIP:Director用来和RS进行交互的地址
CIP:公网IP,客户端使用的IP。
 
LVS的三种类型:
LVS-NAT:网络地址转换 Network address translation
LVS-DR:直接路由 Direct routing
LVS-TUN:IP隧道 IP tunneling
 
五、详解三种类型:
 
【NAT】
NAT是三种类型中最简单的,和iptables中的DNAT相类似,相当于扩展的DNAT。
工作模式如图:

集群入门浅析---LVS

核心点:
1、集群节点(real server:RS)必须要和Director IP在同一个网络中
2、RIP地址通常使用私有地址,仅用于本地通信
3、Director工作在client和RS中间,负责处理进出的全部报文;
4、RS网关要指向DIP;
5、可以实现端口转换;
6、RS可以是任何操作系统;
7、Director可能会成为系统瓶颈,这种模型不适合于较大规模请求的应用场景;
 
【DR】
DR模型是最核心的模型,用户请求经过Director,再由Director根据调度算法得出要交给的RS,再由RS直接响应给客户端。
工作模式如图:

集群入门浅析---LVS

核心点:
1、RS和Director必须在同一物理网络上(中间不能有路由设备)
2、RIP可以使用公网地址
3、Director仅处理请求报文
4、RS不能将DIP作为默认网关
5、不能使用端口映射:RS是从本机直接响应的,客户会不认可。
6、大多数的操作系统都可以用于RS
7、DR模型的Director能够处理比NAT模型多的多的请求
 
【TUN】
TUN模型和DR模型相类似,但是TUN中DIP和RIP可以不在同一网络中,DIP-->VIP 基于隧道来传输,在数据包外层额外封装了S:DIP D :RIP 的地址。
工作模式如图:

集群入门浅析---LVS

核心点:
1、RS和Director不必在同一物理网络中
2、RIP 一定不能使用私有地址
3、大多数情况下Director仅处理请求报文
4、响应报文不能经过Director
5、不能使用端口映射
6、仅允许支持隧道协议的操作系统用于RS
 
六、【LVS的调度方法】
 
静态(固定)方法:不考虑RS当前的连接状况,仅根据算法本身调度。
RR:Round-robin:轮循-----将用户请求平均到RS
WRR:Weighted round-robin:加权轮循-----按照性能分配,为其计算出权重,权重越大,功能越强
DH:Destination hashing:目标地址hash-----将某个固定IP的请求转发给一个相同的real server,用于具有缓存服务器
SH:Source hashing:源地址hash-----为了保证响应的报文和请求的报文来自于同一防火墙
 
动态调度算法:要将RS的连接状态记入调度考量标准
先引入TCP的连接状态:
活动连接--active:处于数据传输,占据资源比较大。
非活动连接--inactive:已经建立了3次握手,但是没有进行数据传输
 
LC--Least Connection最小连接:没有考虑到性能上的差别
    算法:overhead=active*256+inactive 得数越小将获得下一次连接机会
WLC--Weighted least connection加权最小连接:性能差别,能者多劳
    算法:overhead=(active*256+inactive)/weight (默认算法)
SED--Shortest Expected Delay最短的期望的延迟:
    算法:overhead=((active+1)*256)/weight
NQ--Never Queue永不排队:(第一个连接不作计算)
    避免SED的极端场景,不管权重,只要没有新连接,先分配一个,再做计算
LBLC--Locality-Based Least-Connection基于本地的最少连接基于DH机制,它对于新连接会考虑连接状态,两台缓存服务器可以共享缓存数据
LBLCR--Locality-Based Least-Connection with replication Scheduling带复制功能的基于本地的最少连接:复制功能要额外配置的
 
 
七、定义集群服务的命令:
 
ipvsadm:定义集群服务,指定VIP,协议以及端口;管理集群服务中的节点RS
用法:
 
1、定义集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A: 添加新的集群服务
-E: 修改已存在的服务
-s scheduler: 指定调度方法
-p:保持请求长连接的超时时间,默认是300s
 
ipvsadm -D -t|u|f service-address
-D:删除一条服务
 
2、管理集群服务中的RS
ipvsadm -a|e -t|u|f service-add -r server-add [-g|i|m] [-w weight]
-a:添加一个RS
-e:修改RS
-t:tcp协议
-u:udp协议
-f:指定经过iptables标记过的服务类型
-i: 隧道模型
-g: DR模型
-m: NAT模型
-w:指定权重
ipvsadm -d -t|u|f service-add -r server-add 删除一条RS
 
查看定义的服务及RS
ipvsadm -L|l
-n:不反解
-c: 查看目前连接状态
--states:输出统计数据
--rate:计算过去一段时间平均每秒多少个链接
清空所有定义:
ipvsadm -C
 
保存和恢复集群服务:
ipvsadm -R = ipvsadm-restore 
ipvsadm -S = ipvsadm-save