• home > tools > Cluster > Terminology >

    高性能/高可用性/高负载的集群系统架构通讲

    Author:zhoulujun Date:

    集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。LB HA HPC集群的优劣以及混合使用的架构设计

    LB/HA/HPC

    Linux 有大量的集群系统可供选择,适合于不同的用途和需要。但确定应该使用哪一个集群的工作却没有因此变得简单。

    问题的部分原因在于术语集群用于不同场合。IT 经理可能关心如何使服务器运行时间更长,或使应用程序运行得更快,而数学家可能更关心在服务器上进行大规模数值计算。两者都需要群集,但是各自需要不同特性的群集。

    什么是集群

    简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点

    更详细的说,集群(一组协同工作的计算机)是充分利用计算资源的一个重要概念,因为它能够将工作负载从一个超载的系统(或节点)迁移到集群中的另一个系统上。其处理能力是与专用计算机(小型机,大型机)可相比,但其性价比高于专用计算机

    • 硬件有:结点、网络、存储

    • 软件有:机群系统、节点系统、应用支撑软件

    Cluster集群技术的定义

    一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务

    大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。Cluster必须可以协调管理各分离的组件的错误和失败,并可透明地向Cluster中加入组件。一个Cluster包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。Cluster内各节点服务器通过一内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上的任一故障发生时,客户都将能很快连接到新的应用服务上。

    集群系统的主要优点

    1. 高可用性:集群中的一个节点失效,它的任务可传递给其他节点。可以有效防止单点失效。

    2. 高性能:负载平衡集群允许系统同时接入更多的用户。  

    3. 高性价比:可以采用廉价的符合工业标准的硬件构造高性能的系统。

    4. 高扩展性:用户若想扩展系统能力,不得不购买更高性能的服务器,才能获得额外所需的CPU 和存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可。对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。

    集群系统结构

    根据典型的集群体系结构,集群中涉及到的关键技术可以归属于四个层次:

    • 网络层:网络互联结构、通信协议、信号技术等。

    • 节点机及操作系统层高性能客户机、分层或基于微内核的操作系统等。

    • 集群系统管理层:资源管理、资源调度、负载平衡、并行IPO、安全等。

    • 应用层:并行程序开发环境、串行应用、并行应用等。

    集群技术是以上四个层次的有机结合,所有的相关技术虽然解决的问题不同,但都有其不可或缺的重要性。

    集群系统的分类    

    虽然,根据集群系统的不同特征可以有多种分类方法,但是一般把集群系统分为三大类:   

    负载均衡集群(Load Balance):

    使任务可以在集群中尽可能平均地分摊不同的计算机进行处理,充分利用集群的处理能力,提高对任务的处理效率。

    负载均衡集群也是由两台或者两台以上的服务器组成。分为前端负载调度和后端服务两个部分。负载调度部分负载把客户端的请求按照不同的策略分配给后端服务节点,而后端节点是真正提供服务的部分。与HA Cluster不同的是,负载均衡集群中,所有的后端节点都处于活动动态,它们都对外提供服务,分摊系统的工作负载。

    负载均衡架构设计图

    负载均衡集群可以由硬件设备来完成,也可以通过软件方式实现

    • Hardware

      • F5,BIG IP

      • Citrix,Netscaler

      • A10(最便宜)

    • Software

      • nginx 分流:http ,smtp,pop3,imap

      • haproxy 分流: http,tcp(mysql,smtp)

      • LVS(Linux Virtual Server),LVS不能和iptables一起使用,LVS是工作在内核区域的。

    在《Linux Virtual Server概述:体系结构/负载均衡/负载调度/集群模式》,LVS和Nginx的区别在于 LVS是传输层(OSI 7层模型中的第4层)的负载均衡 也就是ip和端口的负载均衡,Nginx/haproxy 是应用层(7层中第7层) http协议的负载均衡 比如http协议中中的url ,浏览器缓存,cookie一些设置都可以在应用层,在第4层就无法做到。

    四层和七层上的负载均衡区别:4层是在IP和端口上做负载均衡,7层是在特定的应用层协议上做负载均衡

    负载均衡集群的弱点

    当横向扩展到一定机器后,发现在怎么横向加机器也没有效果的时候,瓶颈就卡在分发的服务器上了,也就是LB机器上了,如何解决呢?功能拆分吗,一个功能一个LB集群。

    在实际应用中是几种集群类型混合使用,以此提供更加高效稳定的服务。如在一个使用的网络流量负载均衡集群中,就会包含高可用的网络文件系统、高可用的网络服务。    

    高性能计算集群(High Perfermance Computing)

    简称HPC集群,也称为科学计算集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力,包括数值计算和数据处理

    在这种集群上运行的是专门开发的并行应用程序,它可以把一个问题的数据分布到多台的计算机上,利用这些计算机的共同资源来完成计算任务,从而可以解决单机不能胜任的工作(如问题规模太大,单机计算速度太慢)。    概括来说

    • 向量机:通过在一台机器上增加硬(比如加100个CPU)件的方式提高性能。

    • 并行处理集群:横向扩展

      • 需要一个分布式文件系统

      • 将大任务切割为小任务,分别进行处理的机制

    HPG与超级计算类似,但是又有不同。HPG倾向于追求综合性能。应用领域更为广泛,如天气预报、石油勘探与油藏模拟、分子模拟、生物计算、基因测试对比、数据挖掘应用等。

    上面3种集群的各自用途:

    • LB用于高并发

    • HA用于高稳定

    • HP用于海量数据分析(大数据分析,比如分析中国15亿人),复杂的科学计算,模拟核弹爆炸,天气预报

    高可用集群(High Availability)

    简称HA集群,这类集群致力于提供高度可靠的服务。就是利用集群系统的容错性对外提供7*24小时不间断的服务,如高可用的文件服务器、数据库服务等关键应用。

    高可用集群 有多个LB,一旦主LB挂断,副LB马上取而代之。副LB怎么知道主LB是否还或者呢,主LB每间隔一段时间(1秒或者半秒)向副LB集群发送还活着的信息,副LB接到了主LB还或者的信息,就知道了它还或者。如果多次副LB没有接收到主LB的活着的信息,则取而代之。那么副LB怎么取代主LB呢,把主LB的IP设置成自己机器的IP,并启动和主LB同样的服务。

    高可用集群软件

    高可用集群一般通过高可用软件来实现的。在Linux下常用的高可用软件有HearbeatHA,Red Hat提供的RHCS,商业软ROSE,keepalive等。

    什么是高可用性 (HA)    

    计算机系统的可用性(availability)是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的工程上通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:MTTF/(MTTF+MTTR)*100%。

    常见的HA Cluster

    常说的双机热备、双机互备等都属于高可用集群的范畴,这类集群一般都由两个或两个以上节点组成。典型的双机热备结构图如下。

    这里写图片描述health check:


    • 双机热备最简单的应用模式,即经常说的active/standby方式。它使用两台服务器,一台作为主服务器,运行应用程序对外提供服务;另一台作为备机,安装和主服务器一样的应用程序,但是并不启动服务,处于待机状态。主机和备机之间通过心跳技术互相检查,监控的资源可以是网络、操作系统,也可以是服务,用户可以根据自己的需要,选择需要监控的资源。当备份监控到主机的某个资源出现故障时,根据预先设定好的策略,首先将IP切换过来,然后将应用程序服务也接过过来,接着就由备机对外提供服务。切换过程时间非常短,用户根本感觉不到程序出了问题,从而保障了应用程序持久、不间断地服务。

    • 双击互备是在双机热备的基础上,两个相互独立的应用在两个机器上同时运行,互为主备,即两台服务器是主机也是备机。当任何一个应用出现故障,另一台服务器都能在短时间内将故障机器的应用接过过来,从而保障了服务的持续、无间断运行。双机互备的好处是节省了设备资源,两个应用的双机热备至少需要4台服务器,而双机互备仅需要两台服务器即可完成高可用集群功能。但双机互备也有自身的缺点:在某个节点故障切换后,另一个节点上就同时运行了两个应用的服务,有可能出现负载过大的情况。多机互备是双机热备的技术升级,通过多台及其组成一个集群,可以在多台机器之间设置灵活地接管策略。

    注意:高可用集群不能保证应用程序数据的安全性,它仅仅解决的是对外提供持久不间断的服务,把因软件、硬件、网络和人为因素造成的故障而对应用造成的影响降低到最低程序。

    health check:

    试想一下,如果LB下的某个机器坏掉了,会发生什么情况?LB分发到这台机器上的请求,这台机器不能处理了。所以LB需要知道地下的机器哪些挂掉了,哪些又从挂掉的状态恢复成正常状态了,这就是health check。如果发现它挂掉了,则不往它这里分发请求了。如果它又恢复了,则继续往它这里分发请求。

    负载均衡服务器的高可用性 

    为了屏蔽负载均衡服务器的失效,需要建立一个备份机。主服务器和备份机上都运行High Availability监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供服务;当备份管理器又从主管理器收到“I am alive”这样的信息是,它就释放服务IP地址,这样的主管理器就开开始再次进行集群管理的工作了。为在主服务器失效的情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步与备份,保持二者系统的基本一致。

    HA的容错备援运作过程    

    • 自动侦测(Auto-Detect)阶段 由主机上的软件通过冗余侦测线,经由复杂的监听程序。逻辑判断,来相互侦测对方运行的情况,所检查的项目有:主机硬件(CPU和周边)、主机网络、主机操作系统、数据库引擎及其它应用程序、主机与磁盘阵列连线。为确保侦测的正确性,而防止错误的判断,可设定安全侦测时间,包括侦测时间间隔,侦测次数以调整安全系数,并且由主机的冗余通信连线,将所汇集的讯息记录下来,以供维护参考。    

    • 自动切换(Auto-Switch)阶段 某一主机如果确认对方故障,则正常主机除继续进行原来的任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服务。    

    • 自动恢复(Auto-Recovery)阶段 在正常主机代替故障主机工作后,故障主机可离线进行修复工作。在故障主机修复后,透过冗余通讯线与原正常主机连线,自动切换回修复完成的主机上。整个回复过程完成由EDI-HA自动完成,亦可依据预先配置,选择回复动作为半自动或不回复。

    HA三种工作方式:

    主从方式 (非对称方式)

    工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。

    双机双工方式(互备互援)

    工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。

    集群工作方式(多服务器互备方式)

    工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。

    集群节点间的文件同步:

    • rsync:远程文件拷贝命令

    • inotify :内核监控文件发生变化后,会发信号给用户进程。

    所以使用rsync+inotify ,可以实现,各个服务器机器见的静态文件的同步。

    DAS和NAS

    • DAS:direct attached storage,以块为单位请求文件

    • NAS:network attached storage,以整个文件为单位请求文件

    DAS的传输速度根据设备类型的不同,最少也能320Mbps,最高的能6Gbps;而百兆以太网的速度为12.5Mbps,千兆125Mbps。

    所以DAS的性能更好。如果多台主机同时使用DAS设备,是通过线连接到DAS设备上的,DAS设备相当于一块硬盘,里面没有操作系统,所以主机1写DAS上的文件A,主机B也写DAS上的文件A,文件A就会错乱。主机1的进程1写DAS上的文件A,主机1的进程2写DAS上的文件A,主机1的操作系统会提供锁机制。

    脑裂split-brain

    主副切换时,会产生split-brain:脑裂

    主服务器由于太忙了,没来得及给副服务器发送心跳信息,这时副服务器取代了主服务器,但是在主服务器还有一些数据没有写到DAS设备上,数据就丢失了。

    隔离机制:fencing

    • 节点级别:stonith

    • 资源级别:切断某个主机能够访问DAS的接口

    如果只有主服务器和一个副服务器,它们2个就会来回强着当主服务器,为了避免split-brain,我们就需要至少3台服务器或者奇数个服务器作为一个集群。

    • 其中一台接受不到另外2台的心跳了,自动把自己下线

    • 其中2台都接受不到另外一条的心跳了,杀死它。

    常见集群文件系统

    常见的集群文件系统有很多,这里仅列出开源的集群文件系统。

    GFS(Global File System,全局文件系统)

    GFS是RHCS为集群系统提供的一个存储解决方案,是一种基于Linux共享磁盘的集群文件系统,它支持共享存储设备,允许集群的多个节点在块级别上共享存储,可以同时对共享存储设备上的文件进行访问,每一台及其都可以将网络共享磁盘挂载到本机作为本地磁盘,而文件系统数据却不受破坏,单一的ext2或ext3无法做到。为了实现多个节点对一个文件系统同时进行读写操作,GFS使用锁管理器(DLM)来管理I/O操作:当一个写进程操作一个文件时,此文件被锁定,其它进程无法进行读写操作,操作完成后,RHCS底层机制会把此操作在其它节点上可见。有GFS就有RHCS,但建立RHCS时,如果不用共享存储,就没有必要用GFS。

    OCFS2(Oracle Cluster FS)

    OCFS2是Oracle开发的一个开源群文件系统。第一个版本是OCFS,这个版本的文件系统是Oracle专门为Oracle RAC所开发的,仅仅能用在Oracle RAC应用上,而OCFS2是Oracle的第2个集群文件系统版本,此版本是作为一个通用群文件而设计的,它允许集群中的所有节点通过标准的文件系统接口并开发访问设置。使用OCFS2,用户不但可以在共享磁盘上存储与数据库相关的文件,而且还可以存储与Oracle不相关的其他数据文件。

    Lustre文件系统

    Lustre名字是由Linux和Clusters演化而来,是为解决海量存储问题而设计的全新文件系统。它是一个开源、基于对象存储技术的集群并进行文件系统,具有很高的可扩展性、可用性、可靠性和易用性等,在高性能计算机系统中被广泛使用,可支持多大10000个节点,PB级别的存储量,100GB/S的传输速度,同时具有完美的安全性和可管理性。


    参考文章:

    集群(cluster)和高可用性(HA)的概念 https://www.cnblogs.com/BlackWizard2016/p/5143816.html

    Linux 集群大全 https://www.ibm.com/developerworks/cn/linux/cluster/lw-clustering.html

    cluster集群基本概念 https://www.cnblogs.com/xiaoshiwang/p/11592248.html

    Cluster概念详解 https://blog.csdn.net/Celeste7777/article/details/47809599



    转载本站文章《高性能/高可用性/高负载的集群系统架构通讲》,
    请注明出处:https://www.zhoulujun.cn/html/tools/Cluster/ClusterTheoryTerminology/8362.html

    上一篇:First page
    下一篇:Last page