简述HA cluster原理
一、高可用集群HA Cluster:
-
1、集群类型分为:LB负载均衡集群(lvs/nginx(http/upstream, stream/upstream))、HA高可用集群、HP高性能集群。
-
2、高可用集群,英文原文为High Availability Cluster,简称HA Cluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。高可用性集群(HA cluster)是指如单系统一样地运行并支持(计算机)持续正常运行的一个主机群。
-
3、高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损 失。如果某个节点失效,它的备援节点将在几 秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。
-
4、只有两个节点的高可用集群又称为双机热备即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能, 更能满足用户不断出现的需求变化。
二、高可用集群目的:
-
1、 利用集群方案解决单点故障SPoF(Single Point of Failure) 。
-
2、提高系统可用性,降低MTTR。
A=MTBF平均故障间隔时间/(MTBF平均故障间隔时间+MTTR平均恢复时间)
高可用集群的标准有: 99%, 99.5%, ...., 99.999%,99.9999%; -
3、利用集群方案解决硬件和软件故障:设计缺陷、wear out、自然灾害等。
三、高可用集群解决手段
-
手段:冗余方案(redundant)
-
集群主机分为:active/passive(一主多备),active/active(双主)
- 主备方式
集群中的节点以主备的方式运行,主机处于工作状态,备机处于监控准备状态;当主机出现宕机状态时,备机接管主机的一切工作, 待主机恢复正常后,备机再根据事先设置的设定来决定是否把服务切换到主机上运行。 - 双主方式
集群中的节点均已主机方式运行,互相之间同时运行维护各自的服务工作并相互检测。当任意一台主机宕机后,另一台主机会接管它的一切工作,保证服务正常运行。
- 主备方式
-
解决方案的开源软件有:keepalived 、heartbeat、corosyns
一般采用奇数主机方案3/5/7个
四、高可用集群原理:
HA nginx service:概念可以理解为高可用的是“服务”,组成一个高可用服务的“组件”叫做资源;
节点主机相互通信可以分为以下:
节点主机之间的通信层级
1.信息层(Messaging)
- 也叫底层基础架构层,主要用于节点之间传递心跳信息,也称为心跳层。节点之间传递心跳信息可以通过广播,组播,单播等方式。
- 心跳信息:集群中每一台服务器都不停的将自己在线的信息通告给集群中的其他主机。
- 心跳信息的传递是基于套接字通信的,通过软件提供服务监听套接字,实现数据发送、请求。必须安装软件,并开启服务,这是实现高可用集群的基础。
2.成员层(Membership)
- 这层最重要的作用是通过Cluster Consensus Menbership Service(CCM)这种服务由Messaging层提供的信息,来产生一个完整的成员关系。
- CCM 组件(Cluster Consensus Menbership Service):作用,承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就重新计算整个集群的票数和收敛状态信息,并将结果转递给上层,让上层做出决定采取怎样的措施。CCM 还能够生成一个各节点状态的拓扑结构概览图,以本节点做为视角,保证该节点在特殊情况下能够采取对应的动作。
- Messaging & Membership一般由同一软件实现。
3.资源分配层(Resource Allocation)
-
也叫资源管理器层,真正实现集群服务的层。包含CRM(集群资源管理器,cluster Resource Manager),CIB(集群信息基库,Cluster Infonation Base),PE(策略引擎,Policy Engine),TE(实施引擎,Transition Engine), LRM(Local Resource Manager,本地资源管理器)。
-
CRM组件:核心组件,实现资源的分配和管理。每个节点上的CRM都维护一个CIB用来定义资源特定的属性,哪些资源定义在同一个节点上。主节点上的CRM被选举为DC(Designated Coordinator指定协调员,主节点挂掉会选出新的DC),成为管理者,它的工作是决策和管理集群中的所有资源。
-
任何DC上会额外运行两个进程,一个叫PE,;一个叫TEPE :定义资源转移的一整套转移方式,但只做策略,并不亲自来参加资源转移的过程,而是让TE来执行自己的策略。
-
TE : 就是来执行PE做出的策略的并且只有DC上才运行PE和TE。
-
CIB组件:XML格式的配置文件,工作的时候常驻内存,只有DC才能对CIB进行修改,其他节点上的复制DC上的CIB而来。集群的所有信息都会反馈在CIB中。
-
LRM组件:是执行CRM传递过来的在本地执行某个资源的执行和停止的具体执行人。
资源(补充):在集群中构成一个完整服务的每一部分都叫资源,都需要配置和管理。
以web应用为例:vip是资源,web服务器是资源,存储也是资源。不同的服务的资源也不尽相同,其中存储资源的选择、配置、管理是高可用集群中的难点问题。
4.资源代理层(Resource Agents)
-
集群资源代理,能够管理本节点上的属于集群资源的某一资源的启动,停止和状态信息的脚本,资源代理分为:LSB(/etc/init.d/*),OCF(比LSB更专业,更加通用)。
-
任何资源代理都要使用同一种风格,接收四个参数:{start|stop|restart|status},每个种资源的代理都要完成这四个参数据的输出。
工作机制:
PE根据CIB获取资源的配置信息(集群上的所有信息都会收集到DC的CIB,同步到其它节点),而后做出决策,一旦做得决策就会进行资源的管理。PE借助于本地的CCM通知给其它节点CIB来实现对某些资源管理信息的传递,比如说通告其它CRM要启动某一资源了,收到信息后CRM并不负责启动,转由LRM(Local Resource Manager本地资源管理)启动,而并发资源又借助于RA(Resource Agent资源代理)实现资源管理。
- 故障切换过程:
Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作;
Failback:故障移回,即某资源的主节点故障后重新修改上线后,将转移至其它节点的资源重新切回的过程;
- 两个节点集群方案辅助设备:
NodePing:提供网站和服务器可用性监控。在最基本的,服务允许用户输入一个地址的网站地址列表或其他基于互联网的服务,然后检查网站或服务是正常。如果一个网站或其他服务不正确的反应,服务通过电子邮件自动通知别人。
quorum disk:仲裁磁盘( Quorum Disk),其作用是在协调集群节点间的故障转移(Failover)。 - 共用存储器解决:
NAS:文件共享服务器;
SAN:存储区域网络,块级别的共享;