高可用集群

高可用集群

1  概述

Linux HA Cluster的原理模型与构建实例(1)

一、什么是高可用集群

 

高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务。高可用集群是用于单个节点发生故障时,能够自动将资源、服务进行切换,这样可以保证服务一直在线。在这个过程中,对于客户端来说是透明的。

 

二、高可用集群衡量标准

 

 高可用集群一般是通过系统的可靠性(reliability)和系统的可维护性(maintainability)来衡量的。通常用平均无故障时间(MTTF)来衡量系统的可靠性,用平均维护
时间(MTTR)来衡量系统的可维护性。因此,一个高可用集群服务可以这样来定义:HA=MTTF/(MTTF+MTTR)*100%

 

一般高可用集群的标准有如下几种:

 

99%:表示 一年宕机时间不超过4天

 

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

 

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

 

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

 

三、HA Cluster 相关特性

 

1、提供冗余系统:HA
Cluster:为提升系统调用性,组合多台主机构建成为的集群

2、vote
system投票系统:HA中的各节点无法探测彼此的心跳信息时,必须无法协调工作;此种状态即为partitioned
cluster;

 

 投票原则:

 

(1)少数服从多数原则:quorum

 

whit quorum(拥有法定票数) > total1/2

 

without quorum(无法定票数)<= total1/2

 

 
当HA节点数为奇数时,通过判断投票数来仲裁,当HA节点数为偶数时,就需要使用其他仲裁设备

 

 (2)仲裁设备

 

quorum disk (qdisk):qdisk 是一个小于 10MB
导入所有集群节点的共享磁盘设备。qdiskd
是运行在集群的所有节点上用来定期评估自身的健康情况的后台服务,它定期将其节点的状态信息放
入到 qdisk 上。 每 qdiskd 服务在提交其节点信息后,接着查看 qdisk
上其他节点的状态,权重为(N / 2);

 

ping node:同时ping某个网关或设备,通过通不通来仲裁

 

3、failover:
失效转移,故障转移,failback:失效转回,故障转回,通过配置ha.cf文件中的auto_failback
on启用

 

4、心跳信息传递机制

 

(1)Serail cable:串形接口连接,作用范围有限,不建议使用;

 

(2)Ethernet
cable:网线连接,通过网络接口(中间可通过交换机)将主机连接起来;

 

(3)UDP Unicast:UDP单播方式

 

 UDP  Multicast:UDP组播方式(相对比较常用)

 

 UDP Broadcast:UDP广播方式

 

说明:组播地址:用于标识一个IP组播域;IANA(Internet Assigned number
authority)把D类地址空间分配给IP组播使用;其范围是:224.0.0.0-239.255.255.255;

 

永久组播地址:224.0.0.0-224.0.0.255; 

 

临时组播地址:224.0.1.0-238.255.255.255; 

 

本地组播地址:239.0.0.0-239.255.255.255, 仅在特定本地范围内有效

 

四、HA Cluster的工作模型

 

1、主从方式(非对称)A/P:两节点集群,active, passive,工作于主备模型;

集群包含2个节点和一个或多个服务器,备份节点随时都在检测主节点的健康状态信息,当主节点发生故障时,服务会自动切换到备份节点保证运行,平时备份节点不会运行(感觉会让费资源)

 

2、对称方式:A/A:两节点集群,active/active,工作于双主模型;

 

集群包含2个节点和一个或多个服务,其中每一个节点都运行着不同的服务且相互作为备份,两个节点互相检测对方的健康状况,这样当其中一个节点发生故障时,该节点上的服务会自动切换到另一个节点上去,保证服务运行

 

3、多机模型:M-N(M个节点,N个服务,M>N)或M-M(M个节点,M个服务)

 

 集群包含多个节点和多个服务。每一个节点都可能运行和不运行服务,每台服务器都监视着几个指定的服务,当其中的一个节点发生故障时,会自动切换到这组服务器中的一个节点上去。

 

五、HA Cluster的架构层次与解决方案

图片 1

1、Messaging
Layer:主要为信息层,作用是传递当前节点的心跳信息,告知其他节点是否在线,如果不在线,可根据相关机制实现资源转移,同时传递集群相关事务消息(每个节点安装相关心跳软件,通过网线连接起来,相互监听在相关IP地址和端口上)

 

解决方案:

 

(1)heartbeat  V1,V2(稳定版),V3

 

(2)corosync(openAIS的子项目分出研发,功能强大)

 

(3)keepalive

 

(4)cman

 

2、CRM(Cluster  Resource Messager):集群资源管理器

 

主要用来提供那些不具有高可用的服务提供高可用性的,调用Messaging
Layer来实现工作。因此工作在Messaging
Layer上层。资源管理器的主要工作是根据messaging
Layer传递的健康信息来决定服务的启动、停止和资源转移、资源的定义和资源分配。在每一个节点上都包含一个CRM,且每个CRM都维护这一个CIB(Cluster
Internet
 Base,集群信息库),只有在主节点上的CIB是可以修改的,其他节点上的CIB都是从主节点那里复制而来的。在CRM中还包含LRM和DC等组件

 

解决方案:

 

(1)heartbeat v1 haresources (配置接口:配置文件,文件名为haresources)

 

(2)heartbeat v2 crm
(在各节点运行一个crmd进程,配置接口:命令行客户端程序crmsh,GUI客户端:hb_gui);

 

(3)heartbeat v3, pacemaker
(pacemaker可以以插件或独立方式运行;配置接口,CLI接口:crmsh, pcs; GUI:
hawk(webgui), LCMC, pacemaker-mgmt);

 

(4)rgmanager (配置接口,CLI:clustat, cman_tool; GUI:
Conga(luci+ricci))

 

组合方式:

 

(1)heartbeat v1

 

(2)heartbeat v2

 

(3)heartbeat v3 + pacemaker

 

(4)corosync + pacemaker

 

(5)cman + rgmanager (RHCS)

 

(6)cman + pacemaker

 

3、LRM(Local Resource
 Messager):本地资源管理器,属于CRM的组件,用来获取某个资源状态,并且管理本地资源,例如:当检测到对方没有心跳信息时,则会启动本地相关服务

 

4、DC:理解为事务协调员,当集群节点发生故障,出现分组的情况时,由于可能都运行着相关服务,会发生资源抢夺的情况,因此事务协调员DC会根据每个组的法定票数来决定哪些节点启动服务,哪些节点停止服务

 

5、资源隔离组件:如果主节点出现相关故障,此时备份节点立即抢占资源,而主节点正在执行写操作,备份节点一旦也执行相应的写操作,会导致文件系统错乱和服务器崩溃,因此隔离机制此种情况需要采用资源

 

(1)节点级别隔离

 

  STONITH(Shoot The Other Node in the
Head,”爆头“)通过控制电源开关断电,上电来使节点重启或关机

 

(2)资源级别

 

 FC SAN switch可以实现在存储资源级别拒绝某节点的访问

 

6、资源代理RA(Resource
Agent):RA实际复制启动相关资源的,是一个脚本文件,一个节点可以有多个RA

 

(1)heartbeat
legacy:heartbeat传统类型的RA,通常位于/etc/ha.d/haresources.d/目录下;

 

(2)LSB:Linux Standard Base,
/etc/rc.d/init.d目录下的脚本,至少接受4个参数:{start|stop|restart|status};

 

(3)OCF:Open Cluster Framework,子类别:provider

 

STONITH:专用于实现调用STONITH设备功能的资源;通常为clone类型

 

7、资源:资源就是启动一个服务需要的子项目。例如启动一个httpd服务,需要ip,也需要服务脚本、还需要文件系统(用来存储数据的),这些我们都可以统称为资源

 

(1)资源类型:

 

(a)primitive:主资源,只能运行于集群内的某单个节点;(也称作native);

 

(b)group:组资源,容器,包含一个或多个资源,这些资源可通过“组”这个资源统一进行调度;

 

(c)clone:克隆资源,可以在同一个集群内的多个节点运行多份克隆;

 

(d)master/slave:主从资源,在同一个集群内部于两个节点运行两份资源,其中一个主,一个为从;

 

(2)资源约束

 

(a)location:位置约束,定义资源对节点的倾向性;用数值来表示,-oo,
+oo;

 

(b)colocation:排列约束,定义资源彼此间“在一起”倾向性;-oo, +oo

 group(分组):亦能实现将多个资源绑定在一起;

 

(c)order:顺序约束,定义资源在同一个节点上启动时的先后顺序;例如:首先应该先挂载共享存储,在启动httpd或mysqld服务才行吧。

HA Cluster的原理模型与构建实例(1)
一、什么是高可用集群
高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且…

集群Cluster

备注:本文主要结合自己的学习笔记,以及参考博客集群(cluster)原理(转)整理而成。

集群类型:

LB lvs/nginx(http/upstream, stream/upstream)

HA 高可用性

SPoF: Single Point of Failure

HPC

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

系统可用性的公式:A=MTBF/(MTBF+MTTR)

(0,1), 95%

几个9(指标): 99%, …, 99.999%,99.9999%;

2Linux Cluster类型

系统故障:

硬件故障:设计缺陷、wear out(损耗)、自然灾害……

软件故障:设计缺陷

a)高可用性(High Availability)集群

提升系统高用性的解决方案之降低MTTR:

手段:冗余redundant

active/passive 主备

active/active双主

active –> HEARTBEAT –> passive

active <–> HEARTBEAT <–> active

HA集群致力于提供高度可靠的服务,避免SPOF单点失败(single Point Of
failure)的问题。就是利用集群系统的容错性对外提供7*24小时不间断的服务,如高可用的文件服务器、数据库服务等关键应用。

高可用的是“服务”:

HA nginx service:

vip/nginx process[/shared storage]

资源:组成一个高可用服务的“组件”

(1) passive node的数量

(2) 资源切换

b)负载均衡(Load Balancing)集群:

shared storage:

NAS:文件共享服务器;

SAN:存储区域网络,块级别的共享

使任务可以在集群中尽可能平均的分摊不同计算机处理,充分利用集群的处理能力,提高对任务的处理效率。在实际应用中这几种集群类型可能混合使用,以提供更高稳定的服务,如在一个使用网络流量负载均衡的集群中,就会包含高可用的网络文件系统、高可用的网络服务。

Network partition:网络分区

quorum:法定人数

with quorum: > total/2

without quorum: <= total/2

隔离设备: fence

node:STONITH = Shooting The Other Node In The Head,断

电重启

资源:断开存储的连接

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

TWO nodes Cluster

辅助设备:ping node, quorum disk

.LB Cluster分类

Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作

四层:lvs,nginx(stream),haproxy(modetcp)

Failback:故障移回,即某资源的主节点故障后重新修改上线后,将之前已转移

至其它节点的资源重新切回的过程

七层:基于http,如nginx(http),haproxy(mode http), httpd(apache)…

HA Cluster实现方案:

c)性能计算(High Perfervidmance  Computing)集群

ais:应用接口规范 完备复杂的HA集群

RHCS:Red Hat Cluster Suite红帽集群套件

heartbeat

corosync

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

vrrp协议实现:虚拟路由冗余协议

keepalived

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

3  集群的优点

a)高扩展性

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

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

d)高性能价比:可以采用廉价的复合工业标准的硬件来构造高性能的系统

4 集群分类

4.1基于软硬件分类

.硬件:

F5 Big-IP

Citrix Netscaler

A10 A10

.软件:

lvs:LinuxVirtual Server,不能识别应用层数据

nginx:支持四层调度,也可以支持7层调度

haproxy:支持四层调度,也支持7层调度

应用层的调度器,需要对发过来的请求进行解开数据包,然后再封装。有一个问题是,socket一台机器上只能是65536个,并发请求太多,主机将不能正常提供请求。解决方案是把后台服务拆分开,对服务进行分类。把不同的服务拆开,独立提供服务

ats:apachetraffic server,yahoo捐助

perlbal:Perl编写

pound

4.2基于工作的协议层次划分:

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图