集群1

来源:互联网 发布:c语言扑克牌程序 编辑:程序博客网 时间:2024/05/18 00:53

集群

1 什么是集群?

  • 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。(Cluster就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点node)。

  • 集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。

  • 为了满足大量数据的访问负载,需要把成千上万台机器结合在一起,这就是集群架构。

2 集群的宗旨?

  • 可伸缩性、可靠性、可管理性

3 集群分类?

  • 负载均衡集群:Load Balance集群,简称LB,当一台服务器无法满足需求的时候,两台或多台服务器同时为客户端提供服务,以分担需求,提供轮询工作查询。

  • 高可用集群:High Availability集群,简称HA,指通过尽量缩短系统停机时间(因日常的维护操作或突发的系统崩溃等) 以提高系统和应用的可用性。比如一台服务器出现故障的时候,但是不影响客户端体验,另外一台服务器担当这台服务器的工作!

  • 高性能集群:High Perfermance Computing集群,简称HPC,一台计算机是4路,那么100台计算机同时来辅助计算处理,就是400颗CPU!

    区别:

    负载均衡集群:通过提高单位时间内的执行的任务数量来提高效率

    高性能运算集群:通过提高单位时间内的执行时间来提高效率

4 负载集群种类?

7层负载   跨平台   不依赖底层设备4层负载          F5    不涉及流量    提供大数据传输    lvs    原理  2层负载      F5  不涉及流量    提供大数据传输

5 硬件集群和软件集群

  • 硬件:F5负载均衡器(https://f5.com/)

  • 软件:

    LVS     工作在四层  内核空间  请求最高Nginx   工作在七层  用户空间HAProxy 工作在七层  用户空间 转发能力比nginx强,请求数万量 

6 什么是LVS?

  • Linux Virtual Server.意为Linux虚拟服务器,是一个虚拟的服务器集群系统,此项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

7 LVS的工作原理?

  • LVS 集群工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默认情况下来通过用户请求的的地址和端口,来判断用户的请求,从而转发到后台真正提供服务的主机,而判断这种请求的是通过套接字来实现,所以四层就可以实现。

    注:源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。

8 LVS集群的三层结构

  • 负载调度器/分发器 (load balancer) director

    它是整个集群对外的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址上的,我们称这个IP为虚拟IP,Virtual IP=VIP。

  • 服务器池 (Server Pool)

    也就是下图中的RealServer Group,是一组真正执行客户请求的服务器,执行程序可以是一组WEB,FTP,MAIL和DNS等等。RIP

  • 共享存储(Shared Storage)

    它是为服务器池提供的一个共享存储区,这样很容易使得服务器拥有相同的内容,提供相同的服务!

9 LVS包转发方式

LVS有四种转发方式:NAT(网络地址映射)、IP Tunneling(IP 隧道)、Direct Routing(直路由),Full-NAT(全NAT)。不同的转发模式决定了不同的Cluster的网络结构

  • LVS-NAT:

    NAT方式支持任何造作系统,以及私有网络,并且只需要一个Internet IP即可!缺点是整个系统的性能受到限制,因为执行NAT的过程每一次都需要重写包,有一定的延迟。另外,大部分应用有80%的数据是从服务器流向客户端,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成非常大的压力,成为新的瓶颈!大致数据上:真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的瓶颈!

  • LVS-IP Tunneling

    Director(分发器)分配请求到不同的Real Server,Real Server处理请求后直接回应给客户端,这样director负载均衡器处理客户端与服务器的一半链接。IP Tunneling技术极大的提高了director的调度处理能力 ,同时也极大的提高了系统能容纳的最大节点数,可以超过100个节点,Real Server可以在任何LAN和WAN上运行,这就意味着允许地理上的分布(由于通过IP Tuneling封装后,封装后的IP包的目的地址为Real Server的IP地址,那么只要Real Server的地址路由可达,Real Server在什么网络里都可以,这样可以减少对于公网IP地址的消耗,但是因为处理IP Tunneling封装和解封装的开销,那么效率就不如DR模式),这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户端直接通讯(每个Real Server必须绑定VIP),并且所有服务器必须支持IP隧道协议!

  • LVS-Direct Routing

    与IP Tuneling类似,只不过IP Tuneling工作在第三层,而DR工作在第二层,数据链路层。负载均衡器(LB)仅处理了一半的链接,避免了新的瓶颈,同时增加了系统的可伸缩性。Direct Routing与IP Tuneling相比没有IP封装的开销,但是由于采用物理层修改MAC地址技术,所以所有服务器必须在一个物理网段!

11 LVS调度算法

调度算法用于决定LVS如何选择后端的RealServer

  • 轮叫调度(Round Robin)(简称rr)

    调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

  • 加权轮叫(Weighted Round Robin)(简称wrr)

    调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

  • 最少链接(Least Connections)(LC)

    调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用 “最小连接” 调度算法可以较好地均衡负载。

  • 加权最少链接(Weighted Least Connections)(WLC)

    在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

  • 基于局部性的最少链接(Locality-Based Least Connections)(LBLC)

    “基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)(LBLCR)

    “带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

  • 目标地址散列(Destination Hashing)(DH)

    “目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

  • 源地址散列(Source Hashing)(SH)

    “源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

  • 最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED)

    基于wlc算法。这个必须举例来说了
    ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算A(1+1)/1、B(1+2)/2、C(1+3)/3,根据运算结果,把连接交给C。

  • 最少队列调度(Never Queue Scheduling NQ)(NQ)

    无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算

原创粉丝点击