MEI SHENME
分类: 服务器与存储
2006-09-21 10:22:39
HACMP的工作原理是利用LAN来监控主机及网络、网卡的状态。在一个HACMP环境中有TCP/IP网络和非TCP/IP网络。TCP/IP网络即应用客户端访问的公共网,该网可以是大多数AIX所支持的网络,如Ethernet,T.R.,FDDI,ATM,SOCC,SLIP,等等。 非TCP/IP网络用来为HACMP对HA环境(Cluster)中的各节点进行监控而提供的一个替代TCP/IP的通讯路径,它可以是用RS232串口线将各节点连接起来,也可以是将各节点的SCSI卡或SSA卡设置成Target Mode方式。
HACMP将诊测并响应于三种类型的故障:1网卡故障,2网络工作,3节点故障。下面就这三种故障分别进行介绍。
1、网卡故障
前面讲到,HACMP的群集结构中,除了TCP/IP网络以外,还有一个非TCP/IP网络,它实际上是一根“心跳”线,专门用来诊测是节点死机还是仅仅网络发生故障。如下图所示,一旦节点加入了 Cluster(即该节点上的HACMP已正常启动),该节点的各个网卡、非TCP/IP网络就会不断地接收并送Keep-Alive信号,K-A的参数是可调 的,HA在连续发送一定数量个包都丢失后就可确认对方网卡,或网络,或节点发生故障。因此,有了K-A后,HACMP可以很轻易地发现网卡故障,因为一旦某块网卡发生故障发往该块网卡的K-A就会丢失。此时node 1上的cluster manager( HACMP的“大脑”)会产生一个swap-adapter的事件,并执行该事件的script(HACMP中提供了大部分通用环境下的事件scripts,它们是用标准AIX命令和HACMP工具来写的)。每个节点上都有至少两块网卡,一块是service adapter,提供对外服务,另一块是standby adapter,它的存在只有cluster manager知道,应用和client并不知道。一旦发生swap-adapter事件后,cluster manager将原来service adapter的 IP地址转移到standby adapter上,而standby地址转移到故障网卡上,同时网络上其他节点进行ARP的刷新。网卡互换(swap-adapter)在几秒内就可完成,以太网为3秒,并且这种转换对应用和client来说是透明的,只发生延迟但连接并不中断。
2、网络故障
如果发往node1上的service和standby网卡上的K-A包全都丢失,而非TCP/IP网络上的K-A仍然存在,那么HACMP判断node1仍然正常而网络发生故障。此时HACMP执行一个
3 、节点故障
如果不仅TCP/IP网络上的K-A全部丢失,而且非TCP/IP网络上的K-A也丢失,那么HACMP断定该节点发生故障,并产生node-down事件。此时将有资源接管,即放在共享磁盘陈列上的资源将由备份节点接管,接管包括一系列操作:Acquire disks,Varyon VG, file systems,Export NFS file systems, Assume IP network Address, Restart highly available applications,其中IP地址接管和重新启动应用由HACMP来实现,而其他是由AIX来完成。
当整个节点发生故障时,HACMP将故障节点的service IP address转移到备份节点上,使网络上的client仍然使用这个IP地址,这个过程称为IP地址接管(IPAT),如图所示。
当一个节点down掉后,如果设置了IP地址接管,网络上的clients会自动连接到接管节点上;同样,如果设置了应用接管,该应用会在接管节点上自动重启,从而使系统能继续对外服务。对于要实现接管的应用,只需在HACMP中把它们设置成application server,并告诉HACMP启动这个应用的start script的全路径名和停止该应用的stop script的全路径名。由此可见,应用接管的配置在HACMP中十分简单,重要的是start script和stop script的写作,这需要用户对自己应用的了解。
4、其他故障
HACMP只去检测网卡、网络和节点是否发生故障,并作出相应的转移、接管行为。对于其他故障,那么HACMP缺省不作任何动作。
a.硬盘故障
一般我们都将硬盘设置成RAID-5方式或mirror方式,从而提供硬盘的高可用性。RAID-5将奇偶较验位分散在硬盘组中,因此当一组内的一个硬盘坏掉,组内的其他硬盘可以通过奇偶较验位将该硬盘上的数据恢复出来。RAID-5方式一般是由硬件实现的,如下7133的SSA适配器,而且如果同一组内的两个硬盘坏掉,该组硬盘的数据很可能就会全部丢失。mirror方式是将同一个数据写到至少两个物理外置上,因此它的效率没有RAID-5好,而且用盘量大,但安全性比RAID-5高,而且它易于实现,通过AIX中的(Logic Volume Management)可以很方便地设置。
b.硬盘控制卡
存储设备连接到主机上都必须通过一块控制卡,SCSI设备是SCSI Adapter, SSA设备是SSA Adapter,如果这块卡坏掉,与之连接的外设就无法利用。有几种办法可以解决这个问题。
一种办法是用多个adapter。每个主机上都有两块或两块以上adapter,分别连接mirror的数据,因此无论是硬盘坏掉,还是Adapter坏掉,所有好数据还是可以被主机利用,不会出现单点故障。这种方法实现起来并不难,但必须配置多块adapter,而且必须采用数据mirror方式。这种方法也不用通过HACMP来实现。
另一种方法仍只用一块adapter,利用HACMP中的Error Notification Facility( 错误通告机制)来解决。
Error Notification Facility是HACMP提供的对其他设备的监控工具,任何报告给AIX的错误(error)都能被捕获被采取相应措施。HACMP提供了smit界面,使配置简单化。
我们已知道,用LVM可实现硬盘镜像,当一个盘坏掉,仍有一份数据在镜像盘里,数据仍可进行读写,但此时数据不再有可用性,若镜像盘也坏掉则数据全部丢失。所以在此例中,PV丢失(LVM_PVMISS)的信息会大幅显示在控制台面上,从而提醒用户去仔细查看error log找出故障并修复它。同样,此例中HACMP提供了界面,结合AIX的功能,从而监控故障的发生。
c.应用故障
如果用户的应用有kernel call调用,或以root身份来启动等,一旦应用发生故障,很容易导致操作系统down掉,发生死机,这时实际上等于节点故障,HACMP会采取相应接管措施。如果只是应用自身死掉,AIX仍正常运行,HACMP最多利用Error Notification Facility来提供监控功能,对应用本身不采取任何动作。但如果应用中调用了AIX的SRC (System Resource Controller)机制所提供的API接口,就可以使应用在down掉后自动重新启动。除了SRC提供API接口外,HACMP中的clinfo也提供这样的API。
clinfo是cluster Information daemon,它负责维护整个cluster的状态的信息,clinfo API允许应用程序利用这些状态信息来采取相应行动。
d. HACMP故障
如果cluster中节点的HACMP进程down掉,HACMP将其升级为节点故障,从而发生资源接管。
如上所述,HACMP只全权负责诊断网卡故障、网络故障和节点故障这三类故障,并负责实现IP地址转换或接管,以及整个系统资源( 硬件、文件、系统、应用程序,等等)的接管。对于这三类故障外的其他故障,可以结合AIX基本功能和HACMP提供的一些机制,如Error Notification Facility, clinfo API 等,同样可以实现对故障的监控并采取相应措施。