Cluster - 基本概念

1.1 什么是集群     

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

  更详细的说,集群(一组协同工做的计算机)是充分利用计算资源的一个重要概念,由于它可以将工做负载从一个超载的系统(或节点)迁移到集群中的另外一个系统上。其处理能力是与专用计算机(小型机,大型机)可相比,但其性价比高于专用计算机.常见的硬件有:结点,网络,存储.软件有:机群系统,节点系统,应用支撑软件。   html

  Cluster集群技术可以下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工做站提供高可靠性的服务。大多数模式下,集群中全部的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被全部的网络客户所使用。Cluster必须能够协调管理各分离的组件的错误和失败,并可透明地向Cluster中加入组件。一个Cluster包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操做系统和应用程序文件存储在其各自的本地储存空间上。Cluster内各节点服务器经过一内部局域网相互通信。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另外一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被从新启动或被另外一台服务器接管。当以上的任一故障发生时,客户都将能很快链接到新的应用服务上。前端

1.2 集群系统的主要优势:     

(1)高可扩展性:     java

(2)高可用性HA:集群中的一个节点失效,它的任务可传递给其余节点。能够有效防止单点失效。     node

(3)高性能:负载平衡集群容许系统同时接入更多的用户。  mysql

(4)高性价比:能够采用廉价的符合工业标准的硬件构造高性能的系统。linux

 

1、集群定义 
集群(cluster)技术是一种较新的技术,经过集群技术,能够在付出较低成本的状况下得到在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。集群是一组相互独立的、经过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互做用时,集群像是一个独立的服务器。集群配置是用于提升可用性和可缩放性。集群系统的主要优势:高可扩展性、高可用性、高性能、高性价比。nginx

2、集群类型 
1.scale on:向上扩展 
将服务器的内存容量调大和cpu数量增长些(简单说升级服务器硬件) 
缺点:在必定的范围以内它的性能是上升的趋势,可是超出范围以后就是降低的趋势。由于随着它的cpu的个数增长咱们须要给咱们的cpu仲裁,并且随着cpu个数的增长资源竞争性越大。sql

2.scale out:向外扩展 
一台服务器应付不过来,咱们就再增长一台服务器。 
优势:增减服务器很方便,并且没有向上扩展随着增长性能降低。 
向外扩张的工做模式:当客户端向服务器端发送请求,服务器端只拿出来一台服务器来相应咱们的客户端的请求。数据库

(1).LB:Load Balancing:负载均衡集群

负载均衡集群中有一个分发器或者叫调度器,咱们将其称之为Director,它处在多台服务器的上面,分发器根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求。

(2).HA:High Availability 高可用集群 
高可用集群是服务的可用性比较高,当咱们某台服务器死机后不会形成咱们的服务不可用。其工做模式则是将一个具备故障的服务转交给一个正常工做的服务器,从而达到服务不会中断。通常来讲咱们集群中工做在前端(分发器)的服务器都会对咱们的后端服务器作一个健康检查,若是发现咱们服务器当机就不会对其在作转发。

衡量标准:可用性=在线时间/(在线时间+故障处理时间)

99%、99.9%、99.99%、99.999%

(3).HP:Hight Performance 高性能 
高性能的集群是当某一个任务量很是大的时候,咱们作一个集群共同来完成这一个任务。这种处理方式咱们称为并行处理集群,并行处理集群是将大任务划分为小任务,分别进行处理的机制。通常这样的集群用来科学研究与大数据运算等方面的工做。如今比较火的Hadoop就是使用的并行处理集群。

说明:三种集群之间的区别 
负载均衡着重在于提供服务并发处理能力的集群,高可用以提高服务在线的能力的集群。高性能着重用于处理一个海量任务。

2.1 集群系统的分类     

虽然,根据集群系统的不一样特征能够有多种分类方法,可是通常把集群系统分为两类:   

(1)、高可用(High Availability)集群,简称HA集群。     

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

      负载均衡集群:使任务能够在集群中尽量平均地分摊不一样的计算机进行处理,充分利用集群的处理能力,提升对任务的处理效率。     

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

(2)、性能计算(High Perfermance Computing)集群,简称HPC集群,也称为科学计算集群。     

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

这类集群致力于提供单个计算机所不能提供的强大的计算能力。如天气预报、石油勘探与油藏模拟、分子模拟、生物计算等。

 

 

3.1 什么是高可用性 (HA)     

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

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

HA的容错备援运做过程     

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

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

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

3.二、HA三种工做方式: 

(1)、主从方式 (非对称方式) 

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

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

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

(3)、集群工做方式(多服务器互备方式) 

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

 

集群实现方案(软件和硬件)

高可用集群(HA:High Availability)

keepalived vrrp协议的实现

heartbeat

corosync+pacemaker

cman+rgmanager

cman+pacemaker

ais:完备HA集群

 

负载均衡集群

硬件:(最少俩台)

F5 BIG-IP

Citrix Netscaler

A10 A10

Array RedWare 硬件

软件:

lvs:Linux Virtual Server 最强大的软件调度工具,没有之一

haproxy

nginx

ats(apache traffice server)

perlbal

高性能技能(HP:High Performance)

向量机

并行处理集群

解决方案:Hadoop

 

高能能计算集群应用主要按应用类型分为科学计算型集群、负载均衡型集群、高可用型集群、并行数据库型集群四类;按照应用需求对应的应用领域分为: 

 

  • 计算密集型应用(Computing-intensive): 大型科学工程计算,数值模拟等。其应用领域为石油、气象、CAE、核能、制药、环境监测分析、系统仿真等。

  • 数据密集型应用(Data-intensive): 数字图书馆,数据仓库,数据挖掘,计算可视化等;其应用领域:图书馆、银行、证券、税务、决策支持系统等。

  • 通讯密集型应用(Network-intensive): 协同工做,网格计算,遥控和远程诊断等;其应用领域:网站、信息中心、搜索引擎、电信、流媒体等。

 

      HPC 高能能计算经常使用种应用领域主要分为: CAE 仿真、动漫渲染、物理化学、石油勘探、生命科学、气象环境。

 

摘自:https://www.linuxidc.com/Linux/2013-08/88522.htm

1、高可用集群的定义
  高可用集群,英文原文为High Availability Cluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们做为一个总体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。
  高可用集群的出现是为了使集群的总体服务尽量可用,从而减小由计算机硬件和软件易错性所带来的损失。若是某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。所以,对于用户而言,集群永远不会停机。
  高可用集群软件的主要做用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即便用两台服务器互相备份。当一台服务器出现故障时,可由另外一台服务器承担服务任务,从而在不须要人工干预的 状况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更能够支持两个以上的节点,提供比双机热备更多、更高级的功能,更能知足用户不断出现的需求变化。
2、高可用集群的衡量标准  
  HA(High Available), 高可用性群集是经过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,一般用平均无端障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。因而可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%

https://www.top500.org
  具体HA衡量标准:
99% 一年宕机时间不超过4天

99.9% 一年宕机时间不超过10小时

99.99% 一年宕机时间不超过1小时

99.999% 一年宕机时间不超过6分钟

3、高可用集群的层次结构

  说明:高可用集群可分为三个层次结构,分别由红色部分的Messaging与Membership层,蓝色部分的Cluster Resource Manager(CRM)层,绿色部分的Local Resource Manager(LRM)与Resource Agent(RA)组成,下面咱们就来具体说明(如上图),
1.位于最底层的是信息和成员关系层(Messaging and Membership),Messaging主要用于节点之间传递心跳信息,也称为心跳层。节点之间传递心跳信息能够经过广播,组播,单播等方式。成员关系(Membership)层,这层最重要的做用是主节点(DC)经过Cluster Consensus Menbership Service(CCM或者CCS)这种服务由Messaging层提供的信息,来产生一个完整的成员关系。这层主要实现承上启下的做用,承上,将下层产生的信息生产成员关系图传递给上层以通知各个节点的工做状态;启下,将上层对于隔离某一设备予以具体实施。
2.集群资源管理层(Cluster Resource Manager),真正实现集群服务的层。在该层中每一个节点都运行一个集群资源管理器(CRM,cluster Resource Manager),它能为实现高可用提供核心组件,包括资源定义,属性等。在每个节点上CRM都维护有一个CIB(集群信息库 XML文档)和LRM(本地资源管理器)组件。对于CIB,只有工做在DC(主节点)上的文档是能够修改的,其余CIB都是复制DC上的那个文档而来的。对于LRM,是执行CRM传递过来的在本地执行某个资源的执行和中止的具体执行人。当某个节点发生故障以后,是由DC经过PE(策略引擎)和TE(实施引擎)来决定是否抢夺资源。
3.资源代理层(Resource Agents),集群资源代理(可以管理本节点上的属于集群资源的某一资源的启动,中止和状态信息的脚本),资源代理分为:LSB(/etc/init.d/*),OCF(比LSB更专业,更加通用),Legacy heartbeat(v1版本的资源管理)。

核心组件的具体说明(如上图):
1.ccm组件(Cluster Consensus Menbership Service):做用,承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就从新计算整个集群的票数和收敛状态信息,并将结果转递给上层,让上层作出决定采起怎样的措施,ccm还可以生成一个各节点状态的拓扑结构概览图,以本节点作为视角,保证该节点在特殊状况下可以采起对应的动做。
2.crmd组件(Cluster Resource Manager,集群资源管理器,也就是pacemaker):实现资源的分配,资源分配的每一个动做都要经过crm来实现,是核心组建,每一个节点上的crm都维护一个cib用来定义资源特定的属性,哪些资源定义在同一个节点上。
3.cib组件(集群信息基库,Cluster Infonation Base):是XML格式的配置文件,在内存中的一个XML格式的集群资源的配置文件,主要保存在文件中,工做的时候常驻在内存中而且须要通知给其它节点,只有DC上的cib才能进行修改,其余节点上的cib都是拷贝DC上。配置cib文件的方法有,基于命令行配置和基于前台的图形界面配置。
4.lrmd组件(Local Resource Manager,本地资源管理器):用来获取本地某个资源的状态,而且实现本地资源的管理,如当检测到对方没有心跳信息时,来启动本地的服务进程等。
5.pengine组件:
PE(Policy Engine):策略引擎,来定义资源转移的一整套转移方式,但只是作策略者,并不亲自来参加资源转移的过程,而是让TE来执行本身的策略。

TE(Transition Engine): 就是来执行PE作出的策略的而且只有DC上才运行PE和TE。

6.stonithd组件
  STONITH(Shoot The Other Node in the Head,”爆头“), 这种方式直接操做电源开关,当一个节点发生故障时,另 一个节点若是能侦测到,就会经过网络发出命令,控制故障节点的电源开关,经过暂时断电,而又上电的方式使故障节点被重启动, 这种方式须要硬件支持。
  STONITH应用案例(主从服务器),主服务器在某一端时间因为服务繁忙,没时间响应心跳信息,若是这个时候备用服务器一会儿把服务资源抢过去,可是这个时候主服务器尚未宕掉,这样就会致使资源抢占,就这样用户在主从服务器上都能访问,若是仅仅是读操做还没事,要是有写的操做,那就会致使文件系统崩溃,这样一切都玩了,因此在资源抢占的时候,能够采用必定的隔离方法来实现,就是备用服务器抢占资源的时候,直接把主服务器给STONITH,就是咱们常说的”爆头 ”。

 

4、高可用集群的分类    
1.双机热备(Active/Passive)
官方说明:Two-node Active/Passive clusters using Pacemaker and DRBD are a cost-effective solution for many High Availability situations.

2.多节点热备(N+1)
官方说明:By supporting many nodes, Pacemaker can dramatically reduce hardware costs by allowing several active/passive clusters to be combined and share a common backup node.

3.多节点共享存储(N-TO-N)
官方说明:When shared storage is available, every node can potentially be used for failover. Pacemaker can even run multiple copies of services to spread out the workload.

4.共享存储热备 (Split Site)
官方说明:Pacemaker 1.2 will include enhancements to simplify the creation of split-site clusters.


5、高可用集群软件
Messaging and Membership Layer(信息与关系层):
heartbeat (v1,v2,v3),heartbeat v3 分拆  heartbeat pacemaker cluster-glue

corosync

cman

keepalived

ultramokey

Cluster Resource Manager Layer(资源管理层,简称:CRM):
haresource,crm (heartbeat v1/v2)

pacemaker (heartbeat v3/corosync)

rgmanager (cman)

经常使用组合:
heartbeat v2+haresource(或crm) (说明:通常经常使用于CentOS 5.X)

heartbeat v3+pacemaker (说明:通常经常使用于CentOS 6.X)

corosync+pacemaker (说明:如今最经常使用的组合)

cman + rgmanager (说明:红帽集群套件中的组件,还包括gfs2,clvm)

keepalived+lvs (说明:经常使用于lvs的高可用)

总结:咱们常常在技术博客中看到,heartbeat+pacemaker实现mysql高可用,或corosync+pacemaker实现mysql高可用等,有的博友会问了,咱们到底用什么好呢?通过上面的说明你们应该有所了解!

6、共享存储
  说到集群, 咱们不得不说到,共享存储,由于无论理是Web高可用也,Mysql高可用也好,他们的数据都是共享的就一份,全部必须放在共享存储中,主节点能访问,从节点也能访问。下面咱们就简单说一下共享存储。
1.DAS:(Direct attached storage)直接附加存储
说明:设备直接链接到主机总线上的,距离有限,并且还要从新挂载,之间有数据传输有延时
RAID 阵列

SCSI 阵列

2.NAS:(network attached storage)网络附加存储  
说明:文件级别的共享
NFS

FTP

CIFS

3.SAN:(storage area network)存储区域网络  
说明:块级别的,模拟的scsi协议
FC光网络(交换机的光接口超贵,一个差很少2万,若是使用这个,代价过高)

IPSAN(iscsi)存取快,块级别,廉价

7、集群文件系统与集群LVM(集群逻辑卷管理cLVM)
集群文件系统:gfs二、ocfs2
集群LVM:cLVM
注:通常用于高可用双主模型中(以下图)

8、高可用集群的工做原理
说明:这里主要以主/从节点的高可用来讲明工做原理。
  主服务器和从服务器创建双机热备,基本上都是共享一个存储,以mysql为例。一般状况下,数据库文件挂载在主数据库服务器上,用户链接到主服务器上进行数据库操做。当主服务器出现故障时,从服务器就会自动挂载数据库文件,并接替主服务器的工做。用户在未通知的状况下,经过从数据库链接到数据库文件进行操做。等主服务器的故障修复以后,又能够从新提供服务;
  那么,从服务器是如何知道主服务器挂掉了呢,这就要使用必定的检测机制,如心跳检测,也就是说每个节点都会按期向其余节点通知本身的心跳信息,尤为是主服务器,若是从服务器在几个心跳周期内(可自行设置心跳周期)尚未检测到的话,就认为主服务器宕掉了,而这期间在通告心跳信息固然不能使用tcp传输的,若是使用tcp检测,还要通过三次握手,等手握完了,不定通过几个心跳周期了,因此在检测心跳信息的时候采用的是udp的端口694来进行传递信息的,若是主服务器在某一端时间因为服务繁忙,没时间响应心跳信息,这个时候从服务器要是把主服务资源抢过去(共享数据文件),可是这个时候主服务器尚未宕掉,这样就会致使资源抢占,就这样用户在主从上都能访问,若是仅仅是读操做还没事,要是有写的操做,那就会致使文件系统崩溃,这样一切都玩了,因此在资源抢占的时候,能够采用必定的隔离方法来实现,就是从服务器抢占资源的时候,直接把主服务器给“STONITH”,就是咱们常说的“爆头”;
  那么,咱们又用什么方式来检测心跳信息呢?就是经过心跳线来检测。运行在从服务器上的Heartbeat能够经过以太网链接检测主服务器的运行状态,一旦其没法检测到主服务器的“心跳”则自动接管主服务器的资源。一般状况下,主、从服务器间的心跳链接是一个独立的物理链接,这个链接能够是串行线缆、一个由“交叉线”实现的以太网链接。Heartbeat甚至可同时经过多个物理链接检测主服务器的工做状态,而其只要能经过其中一个链接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来讲,建议为Heartbeat配置多条独立的物理连,以免Heartbeat通讯线路自己存在单点故障。
  上面的原理中咱们提到了“隔离方法”,下面咱们来讲一说,隔离方法有两种,一种是节点隔离,另外一种是资源隔离。节点隔离就是咱们常说的STONITH(Shoot The Other Node In the Head ,俗称“爆头”),意思就是直接切断电源;经常使用的方法是全部节点都接在一个电源交换机上,若是有故障,就直接致使该节点的电压不稳定,或断电,让有故障的节点重启或关闭。(以下图),而资源隔离,就是 fencing 直接把某种资源截获过来。

  下面咱们再来讲一说“心路线”的类型,一种是串行电缆,另外一种就是咱们常看到的以太网线(交叉的双绞线),它们各有优缺点,串行电缆,被认为是比以太网链接安全性稍好些的链接方式,由于hacker没法经过串行链接运行诸如telnet、ssh或rsh类的程序,从而能够下降其经过已劫持的服务器再次侵入备份服务器的概率。但串行线缆受限于可用长度,所以主、备服务器的距离必须很是短。以太网线链接,使用此方式能够消除串行线缆的在长度方面限制,而且能够经过此链接在主从服务器之间同步文件系统,从而减小了对正常通讯链接带宽的占用。(以下图)

参考文档:http://www.linux-ha.org/wiki/Main_Pagehttp://clusterlabs.org/wiki/Main_Pagehttp://opencf.org/home.html

相关文章
相关标签/搜索