Linux集群介绍

集群(Cluster):

按照某种方式把服务器连起来来完成一种特定的任务,提高服务器的响应能力。 scale on 在单台主机上提高服务器性能 scale out 增加服务器的数量来提高,负载均衡的集群

集群有三种:

1 LB(Load Balancing) 负载均衡 前端有个分发器(Director)负责接收客户端的请求分发服务到后端的realserver上(或者Dispatcher都是分发器)

2 HA(Hight Availability) 高可用集群(7x24 99.999% ;时时在线的提供服务,只有一个在线服务,另外的做备份)

3 HP(hight Performance) 高性能集群,把任务分片发给集群服务器,然后把结果收集,计算速度非常快

DIrector,(分发器可以通过软件或者硬件实现)

靠软件实现的分发器有二种:基于OSI模型四层和七层交换四层交换 负载均衡是通过ip+端口转发实现,实现不同的服务访问用LVS软件实现 七层交换 实现负载均衡,(squid,反向代理)负载均衡技术,需要特定的协议

LVS,:Linux Virtual Server:开源的负载均衡,作者中国章文嵩,目前在阿里巴巴,首席科学家,LVS 是软件方式实现负载均衡,架构类似iptabless/netfilter

LVS ipvsadm(工具)/ipvs(内核代码)现在的内核都内置了ipvs内核代码,从Linux内核版本2.6起,ip_vs code已经被整合进了内核中,因此,只要在编译内核的时候选择了ipvs的功能,您的Linux即能支持LVS。Linux 2.4.23以后的内核版本也整合了ip_vs code,但如果是更旧的内核版本,您得自己手动将ip_vs code整合进内核原码中,并重新编译内核方可使用lvs。

Virtual server:是前端分发器

Realserver:作为后端的主机,真正响应客户端请求

VIP: Virtual IP address 向客户端提供服务的ip地址,临时性的

RIP: Real IP addresss 作为集群节点的地址

DIP: Director's IP address 用来与directory通信的ip CIP: Client computer's IP address 作为一个客户端来源来访问集群服务器

LVS 集群有三种类型:

LVS-NAT:LVS地址转换类型,就是目标地址转换 集群节点必须在同一个网络中,可以将端口映射到不同端口,directory可能成为系统瓶颈,一般工作在负载20台左右的服务器,不能作为大型的服务

Linux集群介绍

LVS-DR:(directory routing)直接路由类型,linux集群用的最多的一种 DR要求每一个集群节点要与dirctor在同一个网络中,RIP不要求都是私有地址,VIP必须是公网ip,接受进来的请求,对出去的请求不做管理,Rserver的网关不指向Directory,Directory不能重新映射端口,大多数操作系统都可以做Reserver,但windown不能做,支持更多的主机服务器,管理员可以直接远程对服务器管理. 缺点:服务器地址直接面向客户端,不安全

Linux集群介绍

lVS-TUN LVS隧道模式;和DR网络模型一样,但是Director和Reserver可以不再同一网段中,可以实现异地容灾的功能. Directory和Reserver通信是建立一个隧道,在二台主机直接建立一个管道,RIP不能使用私有地址,不能做端口映射,跟DR一样,只有支持隧道协议的操作系统才能作为Reserver

Linux集群介绍

LVS调度方法,算法10种:

当客户端请求时,Directory要根据算法把请求重定向到后台服务器上响应 静态的固定算法(不考虑Realserver上实际存活的数目)

1 Round-robin RR(轮询)当一个新的连接请求到达时,director只是顺序的选择一个下realserver上

2 Weighted Round-Robin WRR:加权轮询,给每一个reserver一个权重来确定下一个请求给谁,权重越大分到请求越多

3 Destination Hashing  DH(目标散列)相当于DNAT,来自同一个ip的请求都重定向到同一个Realserver上去,保证目标地址不变4 Source hashing SH(源散列)相当于SNAT,算法正好与目标地址散列调度算法相反,当来自同一个服务器的响应。还通过同一个路由器出去响应给客户端,保证源地址不变,在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口 动态调度算法(通过检查服务器当前连接的活动状态决定如何进行调度)

5 LC(最少连接) 新的连接请求将被分配至当前连接数最少的RealServer上;最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减一

6 WLC(加权最少连接) 在原有的最少连接的基础上给realserver一个权重,是比较理想的算法

7 SED:最短期望延迟,对wlc的改进,

8 NQ :永不排队,对sed简单改进,还检查当前服务器有没有连接

9 LBLC:基于本地的最少连接,动态的DH,不仅检查是不是请求是不是同一个ip还检查当前有没有连接

10 LBLCR:带复制的最少连接,对lblc的改进,当第二个realserver上的全部请求断开,允许第一个realserver上的请求复制到第二个realserver上响应,减轻第一个realserver上的负担