分类: LINUX
2010-09-16 10:51:07
1.Heartbeat的组成
Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能等。目前的最新版本是 Heartbeat 2.x,这里的讲述也是以Heartbeat 2.x为主。下面介绍Heartbeat 2.0的内部组成,主要分为以下几大部分。
heartbeat:节点间通信检测模块。
ha-logd:集群事件日志服务。
CCM(Consensus Cluster Membership):集群成员一致性管理模块。
LRM(Local Resource Manager):本地资源管理模块。
Stonith Daemon:使出现问题的节点从集群环境中脱离。
CRM(Cluster Resource Management):集群资源管理模块。
Cluster policy engine:集群策略引擎。
Cluster transition engine:集群转移引擎。
图18.1显示了Heartbeat 2.0内部结构组成。
(点击查看大图)图18.1 Heartbeat 2.0内部结构图 |
Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序。要监控资源和应用程序是否运行正常,必须使 用第三方的插件,例如ipfail、Mon和Ldirector等。Heartbeat自身包含了几个插件,分别是ipfail、Stonith和 Ldirectord,介绍如下。
ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并做出合理的反应。为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时做出转移措施。
Stonith插件可以在一个没有响应的节点恢复后,合理接管集群服务资源,防止数据冲突。当一个节点失效后,会从集群中删除。如果不使用 Stonith插件,那么失效的节点可能会导致集群服务在多于一个节点运行,从而造成数据冲突甚至是系统崩溃。因此,使用Stonith插件可以保证共享 存储环境中的数据完整性。
Ldirector是一个监控集群服务节点运行状态的插件。Ldirector如果监控到集群节点中某个服务出现故障,就屏蔽此节点的对外连接功 能,同时将后续请求转移到正常的节点提供服务。这个插件经常用在LVS负载均衡集群中。关于Ldirector插件的使用,将在后续章节详细讲述。
同样,对于操作系统自身出现的问题,Heartbeat也无法监控。如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点资源无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。
针对这个问题,就需要在Linux内核中启用一个叫watchdog的模块。watchdog是一个Linux内核模块,它通过定时向/dev /watchdog设备文件执行写操作,从而确定系统是否正常运行。如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。
在Linux中完成watchdog功能的软件叫softdog。softdog维护一个内部计时器,此计时器在一个进程写入/dev /watchdog设备文件时更新。如果softdog没有看到进程写入/dev/watchdog文件,就认为内核可能出了故障。watchdog超时 周期默认是一分钟,可以通过将watchdog集成到Heartbeat中,从而通过Heartbeat来监控系统是否正常运行。
2.Heartbeat的工作原理
从图18.1中可以看出,Heartbeat内部结构由三大部分组成。
(1)集群成员一致性管理模块(CCM)
CCM用于管理集群节点成员,同时管理成员之间的关系和节点间资源的分配。Heartbeat模块负责检测主次节点的运行状态,以决定节点是否失效。ha-logd模块用于记录集群中所有模块和服务的运行信息。
(2)本地资源管理器(LRM)
LRM负责本地资源的启动、停止和监控,一般由LRM守护进程lrmd和节点监控进程Stonith Daemon组成。lrmd守护进程负责节点间的通信;Stonith Daemon通常是一个Fence设备,主要用于监控节点状态,当一个节点出现问题时处于正常状态的节点会通过Fence设备将其重启或关机以释放IP、 磁盘等资源,始终保持资源被一个节点拥有,防止资源争用的发生。
(3)集群资源管理模块(CRM)
CRM用于处理节点和资源之间的依赖关系,同时,管理节点对资源的使用,一般由CRM守护进程crmd、集群策略引擎和集群转移引擎3个部分组成。 集群策略引擎(Cluster policy engine)具体实施这些管理和依赖;集群转移引擎(Cluster transition engine)监控CRM模块的状态,当一个节点出现故障时,负责协调另一个节点上的进程进行合理的资源接管。
在Heartbeat集群中,最核心的是Heartbeat模块的心跳监测部分和集群资源管理模块的资源接管部分。心跳监测一般由串行接口通过串口 线来实现,两个节点之间通过串口线相互发送报文来告诉对方自己当前的状态。如果在指定的时间内未受到对方发送的报文,就认为对方失效,这时资源接管模块将 启动,用来接管运行在对方主机上的资源或者服务。
图18.2是一个Heartbeat集群的一般拓扑图。在实际应用中,由于节点的数目、网络结构和磁盘类型配置的不同,拓扑结构可能会有不同。
--with-ccmuser-name=hacluster
cd /usr/share/doc/heartbeat-2.0.7/
cp ha.cf /etc/ha.d/
cp haresources /etc/ha.d/
cp authkeys /etc/ha.d/
编辑文件
编辑/etc/ha.d/ha.cf
logfile /var/log/ha-log ha的日志文件记录位置。如没有该目录,则需要手动添加
keepalive 2 ##设定心跳(监测)时间时间为2秒
deadtime 30#指定若备用节点在30秒内没有收到主节点的心跳信号,则立即接管主节点的服务资源
warntime 10#指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的
initdead 120
#在某些系统上,系统启动或重启之后需要经过一段时间网络才
能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍
udpport 694 ##使用udp端口694 进行心跳监测
baud 19200
#serial /dev/ttyS0 # Linux #选择串行通信设备,用于双机使用串口线连接的情况。
如果双机使用以太网连接,则应该关闭该选项。
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cua/a # Solaris
bcast eth1 # Linux
#mcast eth0 225.0.0.1 694 1 0
#ucast eth0 192.168.188.138
auto_failback on
#crm on
node monitor ##节点1,必须要与 uname -n 指令得到的结果一致。
node daniel
ping 10.10.10.145 10.10.10.147 ##通过ping 网关来监测心跳是否正常。
respawn hacluster /usr/lib/heartbeat/ccm
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
#apiauth ipfail uid=hacluster
编辑vi /etc/ha.d/haresources
scp -r node1:/etc/ha.d/* /etc/ha.d/
启动
这样就启动了主节点的Heartbeat服务,为了让Heartbeat能在开机自动运行以及关机自动关闭,可以手动创建以下软连接:
- [root@monitor ~]#ln -s /etc/init.d/heartbeat /etc/rc.d/rc0.d/K05heartbeat
- [root@monitor ~]#ln -s /etc/init.d/heartbeat /etc/rc.d/rc3.d/S75heartbeat
- [root@monitor ~]#ln -s /etc/init.d/heartbeat /etc/rc.d/rc5.d/S75heartbeat
- [root@monitor ~]#ln -s /etc/init.d/heartbeat /etc/rc.d/rc6.d/K05heartbeat
记住要修改防火墙哦
#vi /etc/sysconfig/iptables
加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 10.10.10.0/24 -j ACCEPT
意思是udp 694端口对 对方的心跳网卡地址 10.10.10.0 段 开放。
#service iptables restart
测试
在服务器上 将网卡禁用 ifdown eth1
在进行访问 会时从服务器的服务
当主服务器启动时会将主动权从从服务器上抢回
先启动httpd
在浏览器输入设置lvs
192.168.188。131 就会看到了
参考:
官方文档:
chinaunix网友2010-09-16 15:31:34
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com