群集技术
群集技术就是共同为客户机提供网络资源的一组计算机系统,其中每一台提供服务的计算机,称之为节点。将多台计算机组织起来协同工作模拟一台性能更强大的计算机解决问题。
群集的分类
(1)负载均衡群集 LB (Load Blanching)负载均衡群集在多节点之间通过一定的算法分发网络或计算机处理负载,增加了吞吐量,提高了数据处理能力,同时又可以避免单点故障。
如大型门户网站在处理大量的并发连接请求时,建议使用LB
(2)高可用性群集HA (High Availability)以减少服务中断即实时的在线请求为目的的服务器群集,可靠率99.999%(负载均衡的分发装置)
(3)高性能计算机群集HP (High Performance) 是以提高科学计算能力为目的的计算机群集技术。
负载均衡群集LB的分发装置 Director或是 dispatch ,当有连接请求过来时,通过分发装置的调度的算法,发个后发的server,这个调度算法一共有是十种
分发装置的调度算法又分为固定的调度算法(fixed scheduling)和动态的调度算法(dynamic scheduling)
其中固定的调度算法(不检测server现在的连接数和空闲的连接数,将客户发来的请求该给谁就给谁了通过下面算法)有四种
(1)Round Robin Scheduling(RR)轮询算法 10个请求通过轮询分发如下:
轮询调度算法假设所有的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不均衡。所以此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均请求相对均衡的情况
(2)Weighted Round-Robin Scheduling(WRR)加权轮询调度12个请求通过轮询分发如下:
由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。调度器通过"加权轮询"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值 。加权轮叫调度也无需记录当前所有连接的状态,所以它也是一种无状态调度。
(3)Destination Hashing Scheduling (D-H)目标地址散列调度 就是将来自同一个客户的请求导上同一个Server,如访问一些大型购物网站
(4)Source Hashing Scheduling (S-H)源地址散列调度 与目标地址调度正好相反
在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。
动态的调度算法(考虑哪些以建立的连接或这是那些链接是激活的,那些链接是断开的)有六种
(1)Least-Connection Scheduling(LC)最少连接调度 就是把新的连接请求分配到当前连接数最小的服务器。它通过服务器当前所活跃的连接数来估计服务器的负载情况 ,每一台服务器都有连接记录。(overhead=激活数x256+非激活数,overhead最小的就分发给谁)
如果集群系统的真实服务器具有相近的系统性能,采用最少连接调度算法可以较好地均衡负载,当各个服务器的处理能力不同时,该算法并不理想。
(2)Weighted Least-Connection Scheduling(WLC)加权最少连接调度, 根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求,是对LC的改进,
(3)Shortest Expected Delay Scheduling(SED)最短期望延迟调度,就是为服务器分配预计最短延迟的网络连接。SED算法主要是对处理时间相对比较长的网络服务,不再考虑非活动连接数,可以说是对WLC的改进。
(4)Never Queue Scheduling (NQ)无需等待调度,就是当有空闲服务器可用时,作业将被发送到空闲服务器,而不是等待速度较快的那一台。 2. 若没有空闲服务器可用时,作业将被发送到可用最小化预期延迟的那台服务器,是对SED的改进
(5)Locality-Based Least Connections Scheduling(LBLC)基于局部的最少连接,是针对目标IP地址的负载均衡,目前主要用于Cache集群系统
(6)(Locality-Based Least Connections with Replication Scheduling(LBLCR)带复制的基于局部性最少连接调度,也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统
群集的分发装置实现简单描述一下,
在硬件上有F5 (比较昂贵)
在软件上有 (ipvs(内核代码)+ipvsadm(用户端))这种架构就叫LVS(Linux Virtual Server)已经内置到内核为2.4/2.的linux系统中。
从层次上可以 4层交换 协议+端口 像F5 lvs
7层 像squid nginx