HA理论部分

来源:互联网 发布:网络机房维保 编辑:程序博客网 时间:2024/04/30 23:09

对于高可用集群,某个时刻某种服务只能在一台服务器上运行。

服务器之间的通知连接,通过特定的连接方式

 

共享存储

DAS直接附加存储。避免两个节点同时在一个存储设备上数据,这样可能造成数据的紊乱。常见的设备有RAIDSCSI

NAS 网络附加存储,类似NFS。这样可有一台主机来控制对数据的读写,但是,负责存储的服务器可能成为存储瓶颈,而降低其储存效率。

SAN 存储区域网络,通过光交换机来传输数据,模拟出类似SCSI的设备,但又不同于SCSI,因为其存储是通过块设备的,可以避免同时更改一块数据。但这种设备比较昂贵。其本身是通过FCoe的协议来模拟出设备。为了降低其成本,又出现了通过tcp/ip的协议来实现。这就又需要一台主机,类似于DAS,但是其共享出去的是基本的块儿设备,保证了速度写的速度。

 

Brain-split脑裂:集群分成多个独立的区域,两个主机争用存储资源。

Partitioned cluster集群的分裂:一个大的集群分成了多个小的集群。

 

所以在高可用集群中,保证其资源的独用是最重要的

 

STONITH     shootthe other node in the head。解决资源的共享(脑裂)。如:电源交换机。

 

multipath,解决多路径的情况,如有多条线路的时候,避免识别出有多个多个设备。

 

quarom,法定票数,避免Partitionedcluster。即当主机的数目小于一半的时候,不允许再工作了。注意,每台主机的权重并不是1,而是根据主机的性能,如果其服务器的性能好的话,其权重要大一些,否则小一些。而决定集群是否能运行,主要是剩余的服务器的权重能否大于一半。但对于只有两个节点应特殊对待

 

heartbeat是通过判断是否能收到其他服务器的信号来确定另一台服务器是否能还能够正常运行。

故障转移域:定义故障转移的范围和转移的先后顺序

 

 

 

RHCS是通过判断在磁盘上的特定位置是否书写内容来判断一个节点是的还存在。

RHCS 同样提供fance类似于STONITH

 

 

如图所示:

 

是个高可用集群两节点的示意图。

其中分为四个层次,从下到上

Messaging infrastructure

Membership

Resource Allocation

Resource

 

其中每个圆圈代表一个进程。其中

Messaging infrastructure是最重要的一层,其作用是在集群节点之间传递心跳信息。这是集群正常运行的基础。

Membership 这一层主要是用来做决策的,根据法定票数来决定集群的运行,起作用主要是:添加或删除一个节点的时候做决策。在这层用到的一个进程是CCMClusterConsensus Menbership)通过下层的心跳消息来决定其集群的拓扑。

Resource Allocation 这一层就是提供集群服务的。在其中Cluster Resource Manger是用来管理集群的资源(IP,进程,后台资源等),也成为集群资源管理器,简称:CRM。要保证集群中所有节点的这个服务的配置文件完全相同。在服务器之间同步数据的最好的方式是使用xml格式的数据(其中包含了节点的个数,类型,总的权重,以及各个服务器的配置信息等)。在RHCS中使用ccsd的进程用于在服务器之间同步这个数据。这个文件也叫Cluster Information Base简称CIB,这个文件十分重要。

在集群中各个节点之间是平等的,但需要一个来协调所有关系。这就是Designated Coordinator简称DC。对于集群的所有的计算,控制都在这个节点上进行,同时修改CIB通常也是在这个节点上进行的,而后同步到其他节点上去的

Policy Engine 简称PE,通过计算对这个集群上的所有节点进行计算,来进行决策。

Transition Engine 执行决策,是进行监督决策的执行。但自身并不执行。如果是对本机的决策,则直接传给本地的LRM,否则通过下面的两层传个,其他的服务器。

Local Resource Manager 这是最终执行决策的进程。在一个集群中PETE只运行在DC上。

Resource 这一层才是真正提供集群服务资源的。

Resource Agent 资源代理,这是管理本机资源的进程。有三种类型:heartbeat V1LSB 遵循linux规范的startup脚本,OCF开放式集群格式,类似于LSB,但是比其更有通用性。

切记!不能使用startup脚本启动,必须要使用集群服务的脚本来启动服务,而且切记,不能开机启动。

 

 

heartbeatMessaginginfrastructure中运行的一个进程,现在可以支持2~16个节点。它在各个服务器之间传递心跳信息,这允许客户端知道其他节点的信息通过简单的交互信息。为了更方便用户的使用heartbeat通常需要和CRM结合起来。

pacemaker:专门的CRM可以和多个底层的通信软件结合起来使用。

 

heartbeat的工作过程是这样的:首先你可以告诉heartbeat那个计算机拥有资源,包括哪个是主服务器,哪个是备份服务器。之后在备份服务器上配置其监听主服务器。如果备份服务器监听不到主服务器的心跳,则主动抢占其资源。

其通信的方式有:

组播 UDP

广播 UDP

多播 UDP

串行通信信道

由于心跳信息重要,所有要进行加密。

 

heartbeat传递的信息有:心跳信息,集群事物信息(服务器重启,发送信息),重传信息(出错时候重传一次)。这三种信息都定义在/etc/ha.d/ha.cf文件中(即heartbeat的主配置文件)。

配置文件haresource 用来配置:对外显示的别名IP地址,同时包括其提供的服务的名字,服务所需要的资源。

Gratutious ARP Broadcasts 当备份服务器抢占后,主动通知网关更改了MAC地址。使用到的是/usr/lib/heartbeat/send_arp这个程序。

Resource Scripts资源脚本,用于heartbeat启动提供高可用服务器的启动脚本,通常放在/etc/ha.d/resource.d/文件夹下

/etc/ha.d/authkeys定义信息传递时使用的加密算法,以及密钥等。要求权限必须是600的。

以上使用到的文件在/etc/ha.d/中都没有,当安装完软件之后在/usr/share/doc/heartbeat-Version中存有,直接拷贝,并编辑就行了

ha.cf文件中需要修改的内容:

debugfile 调试日志

keepalive 通告的时间

initdead 确定dead的时间

udpport 通告使用的端口 默认是694,而其不能改。

bcast 使用广播,后面跟上网卡

node 指出其中所有的节点每行一个,且后面的名字必须和使用命令uname -r得到的一样

 

autokeys的书写的方法(要保证权限是600):

第一行auth N,第二行N md5 随机数,表示使用md5的加密方法

 

对于haresource 中只需定义主节点

egnode1.a.com        192.168.0.1/24/eth0/192.168.0.255       httpd

这一行的含义是:主节点是node1.a.com 浮动地址是192.168.0.1掩码24执行在eth0这块儿网卡上     检测进程是httpd

 

模拟主节点挂掉:在/usr/lib/heartbeat文件夹中执行hb_standy,抢占回来执行脚本hb_takeouer来测试是否能正常使用