初识Linux集群

2018-07-20 05:47:25来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Linux集群

Linux集群(cluster)就是一组Linux计算机,它们作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点(node)。一个理想的集群,用户是不会意识到集群系统底层的节点的,在他们看来,集群是一个系统,而非多个计算机系统,并且集群系统的管理员可以随意增加和删改集群系统的节点。
  Linux集群系统的优点主要有4方面:
1、易于扩展,管理员可很方便的增加或删除集群系统中的节点。
2、高可用性,当集群中某一个节点失效时,其负责的任务可以传递给其他节点,有效避免单点故障。
3、高性能,负载均衡的集群系统能够承担极大的并发客户请求。
4、高性价比,可以使用相对廉价的硬件构造出高性能的系统。
  常见的Linux集群类型包括:
1、LB:Load Balancing,负载均衡集群
负载均衡集群中有调度器(Director),它处在多台内部服务器的上层,根据定义的调度方式从下层的服务器组中选择一台来响应客户端发送的请求。
2、HA:High Availability,高可用性集群
顾名思义就是服务的可用性比较高,当某台服务器故障后不会造成所提供的服务中断,集群自动将客户的访问请求转交给一个正常工作的服务器。
3、HP:Hight Performance,高性能
高性能的集群是当某一项任务计算量非常大的时候,由一个计算机集群共同来完成这项任务,这种 处理方式我们称为并行处理机制。一般高性能集群用于科研工作方面。
  常见的Linux集群扩展类型(组建方式)有:
1、scale up(纵向扩展):通过增加硬件资源,即增加更好的设备来满足性能消耗的需求。但是此方式性价比很低。
2、scale out(横向扩展):通过硬件或软件的方式,将由单一服务器负责的业务需求转为一组节点服务器来进行处理,此种方式易于扩展且性价比高。

LVS,Linux Virtual Server

初步认识Linux Cluster后,我们进一步介绍负载均衡集群技术LVS(Linux Virtual Server)。

  LVS是章文嵩博士发起的自由软件项目,它的官方站点是http://www.linuxvirtualserver.org。LVS工作在内核空间,实现TCP/IP协议群的四层路由,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但从Linux2.4内核以后已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
  LVS采用三层结构:调度器、服务器池、共享存储,结构如下图:


负载调度器(load balancer/Director):由一台或多台负载调度器组成,主要作用类似一个路由器,将用户请求分发给服务器池上的real server;
服务器池(server pool/Realserver):一组真正执行客户请求的服务器,执行的服务一般有WEB、MAIL、FTP和DNS等。
共享存储(shared storage):为服务器池提供一个共享的存储区,能使得服务器池拥有相同的内容,提供相同的服务。

  LVS需要在内核的TCP/IP协议栈对数据流进行过滤筛选,这就需要有内核的模块来支持,而这样的过滤转发规则又是由用户进行定义的,我们可以认为LVS是两段式的架构,在内核空间中工作的是”ipvs”,而在用户空间中工作的,用来定义集群服务规则的是”ipvsadm”。

  LVS集群类型相关术语:

术语 解释
Load Balancer 或 Director 负载调度器
RS 或 Real Server 真实服务器,提供服务的真实服务器
VIP 虚拟IP地址,客户端访问的集群地址
RIP 真实服务器的IP地址,提供资源的服务器
DIP 调度器的IP地址
CIP 客户端IP地址

 

 

 

 

 

 

  LVS集群的类型:

lvs-nat:修改请求报文的目标IP;MASQUERADE类型
lvs-dr(direct routing):重新封装新的MAC地址,默认使用的类型; GATEWAY类型
lvs-tun(ip tunneling):在原请求IP报文之外新加一个IP首部;IPIP类型
lvs-fullnat:修改请求报文的源和目标IP

lvs-nat
多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT来实现转发
实现要点:
(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;
(2)请求报文和响应报文都必须经由Director转发;极高负载的场景中,Director可能成为系统瓶颈;
(3)支持端口映射,可修改请求报文的目标PORT;
(4)VS必须是Linux系统,RS可以是任意系统
图解:

     

1、客户端访问集群的VIP,请求WEB资源(请求报文:源地址为CIP,目标地址为VIP);
2、Director收到客户端的请求报文,会修改请求报文中的目标地址(VIP)为RIP,并且将请求根据相应的调度算法送往后端WEB服务器(请求报文:源地址CIP,目标地址为RIP);
3、WEB服务器收到请求,检查报文是访问自己的而自己也提供WEB服务,就会响应这个请求报文,并发送给Director(响应报文:源地址RIP,目标地址CIP);
4、Director收到WEB服务器的响应报文,会根据自己内部的追踪机制,判断出用户访问的是VIP,此时会修改源地址为VIP并响应客户端请求(响应报文:源地址VIP,目标地址CIP)。

 nat模型优缺点:
  优点:节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。
  缺点:调度器位于客户端和集群节点之间,并负责处理进出的所有通信(压力大的根本原因),大规模应用场景中,调度器容易成为系统瓶颈。

 

lvs-dr:lvs的默认模式
通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
要点:
(1)Director和各RS都得配置使用VIP;
(2)确保前端路由器将目标IP为VIP的请求报文发往Director:通过在RS上修改内核参数以限制arp通告及应答级别(arp_announce及arp_ignore);
(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;VIP配置在DR上的时候,应该是在eth0:0上,在RS上配置VIP的时候,就必须是lo:0了,否则达不到让RS不响应VIP的ARP通告的效果。
(4)RS跟Director要在同一个物理网络即同一广播域;
(5)请求报文要经由Director,但响应不能经由Director,而是由RS通过网关直接发往Client;
(6)不支持端口映射

lvs-tun:
转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS
要点:
(1)DIP,VIP,RIP都应该是公网地址;
(2)RS的网关不能,也不可能指向DIP,在RS的lo别名网卡上配置vip地址;
(3)请求报文要经由Director,但响应不能经由Director;
(4)不支持端口映射;
(5)RS的OS得支持隧道功能

lvs-fullnat:
通过同时修改请求报文的源IP地址和目标IP地址进行转发
要点:
(1)VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;
(2)RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;
(3)请求和响应报文都经由Director;
(4)支持端口映射;
(5)lvs-fullnat型lvs默认不支持需更换支持的内核

  LVS的调度算法:

静态调度算法:根据算法本身进行调度
rr:roundrobin,轮询,调度器将外部请求轮流分配到集群中的节点中;
wrr:Weighted RR,加权轮询,调度器根据事先设置的权重来分配外部请求到集群中的节点;
sh:Source Hashing,实现session sticky,源IP地址hash,将来自同一个IP的请求始终发往第一次挑中的真实服务器IP,从而实现会话绑定;
dh:Destination Hashing,目标地址hash,将发往同一个目标地址的请求始终转发至第一次挑中的真实服务器IP,典型使用场景是正向代理缓存场景中的负载均衡

动态调度算法:根据真实服务器当前的负载状态及调度算法进行调度
lc:least connections,调度器通过lc调度算法动态地将网络请求调度到已建立连接最少的服务器上;
wlc:Weighted Least Connections,调度器通过wlc调度算法根据事先设置的权重优化负载均衡调度,具有较高权重的服务器将承受较大比例的连接请求;
sed:Shortest Expection Delay,在wlc基础上改进,Overhead=(activeconns+1)*256/权重;
nq:Never Queue Scheduling,如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空闲;
lblc:locality-based least-connection,基于地址的最小连接数调度,将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑;
lblcr:Locality-Based Least Connections with Replication,带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统,它与lblc算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而lblc算法维护从一个目标IP地址到一台服务器的映射。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux crontab命令 定时任务 用法详解以及no crontab for root解

下一篇:用户和组管理