HACMP可谓做服务器的人,没有不知道的——IBM的看家构架。近期来若干读者电话、邮件讨论HACMP的问题,要求我给大家说说这个东西。
这里,我给大家转载一个应该是来自IBM的文章,该文章写作甚好,内容精确,比我说的应该是强了不少,大家读之,必有受益! 文平
《oracle大型数据库系统在AIX/unix上的实战详解》 集中答疑 45 何谓HACMP
=============================================================================================
Hacmp(High Availability Cluster Multi-Processing)双机热备份软件的主要功能是提高客户计算机系统及其应用的可靠性,而不是单台主机的可靠性。
一、Hacmp双机系统的工作原理
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方式。
1、作为双机系统的两台服务器(主机A和B)同时运行Hacmp软件;
2、服务器除正常运行自机的应用外,同时又作为对方的备份主机;
主机A(运行应用): Service_ip: 172.16.1.1 Standby_ip: 172.16.2.1 Boot_ip: 172.16.1.3 主机B(standby): Service_ip: 172.16.1.2 Standby_ip: 172.16.2.2 Boot_ip: 172.16.1.4
3、两台主机系统(A和B)在整个运行过程中,通过 “心跳线”相互监测对方的运行情况(包括系统的软硬件运行、网络通讯和应用运行情况等);
4、一旦发现对方主机的运行不正常(出故障)时,故障机上的应用就会立即停止运行,本机(故障机的备份机)就会立即在自己的机器上启动故障机上的应用,把故障机的应用及其资源(包括用到的IP地址和磁盘空间等)接管过来,使故障机上的应用在本机继续运行;
5、应用和资源的接管过程由Ha软件自动完成,无需人工干预;
6、当两台主机正常工作时,也可以根据需要将其中一台机上的应用人为切换到另一台机(备份机)上运行。
HACMP双机系统结构图
二、Hacmp安装配置前需作的准备工作
1、划分清楚两台服务器主机各自要运行的应用(如A机运行应用,B机作为standby);
2、给每个应用(组)分配Service_ip、Standby_ip、boot_ip和心跳线tty,如:
3、按照各主机的应用的要求,建立好各自的磁盘组,并分配好磁盘空间;
4、根据Ha软件的要求,对服务器操作系统的参数作必要的修改。
三、IBM HACMP双机服务器系统的解决方案
HACMP的安装配置步骤如下:
(一)在两台服务器上分别安装HACMP软件
#smit installp
(二)分别检查两台主机上安装的软件是否成功
#/usr/sbin/cluster/diag/clverify
software
cluster
clverify>software
Valid Options are:
lpp
clverify.software> lpp
若没有error出现则安装成功。
(三)分别配置两台服务器的boot IP地址和Standby IP地址,保证boot 网和Standby网能ping通(用smit tcpip命令),用netstat命令检查配置是否正确:
#netstat -i
(四)利用smit tty在两台主机上增加一个TTY接口,配置心跳线(RS232):
#smitty tty TTY tty0 TTY type tty TTY interface rs232 Description Asynchronous Terminal Status Available Location 20-70-01-00 Parent adapter sa2 PORT number [0] Enable LOGIN disable BAUD rate [9600] PARITY [none] BITS per character [8] Number of STOP BITS [1]
用lsdev –Cc tty查看tty是否配置好。
#lsdev –Cc tty
在两台上分别输入如下命令:
S85_1# cat /etc/hosts >/dev/tty0
S85_2# cat
如果在S85_2机能接收到信息,则表明心跳线已经配置好。
(五)具体配置及技巧
注:HACMP的配置(或修改配置)只需要在其中的一台主机上进行,当配置(或修改)完毕后使用同步命令将配置结果传到另外一台主机上。一般选S85_1在进行配置。
在S85_1上运行smit hacmp,然后按照下面的步骤进行配置:
#smit hacmp
1、 Cluster Configuration
1.1、配置Cluster Topology
配置Configure Cluster/ Add a Cluster Definition * Cluster ID [100] * Cluster Name [sb_ha] 配置Configure Nodes,增加两个Node * Node Names [s85_a] * Node Names [s85_b] 配置Configure Adapters,分别配置两台机的service地址,boot地址,standby地址 及tty(a_svc、b_svc、a_boot、b_boot、a_stdby、b_stdby、a_tty、b_tty) * Adapter IP Label a_svc Network Type [ether] Network Name [ethnet] Network Attribute public Adapter Function service Adapter Identifier [172.16.1.1] Adapter Hardware Address [ ] Node Name [s85_a] 修改/etc/hosts及/.rhosts文件,如:修改/etc/hosts文件,增加以下内容: 172.16.1.1 a_svc 172.16.1.2 b_svc 172.16.1.3 a_boot 172.16.1.4 b_boot 172.16.2.1 a_stdby 172.16.2.2 b_stdby 修改/.rhosts文件,增加以下内容: a_svc b_svc a_boot b_boot a_stdby b_stdby
1.2、同步cluster(Cluster Configuration/ Cluster Topology/ Synchronize Cluster Topology)
在进行同步的时候可以先进行模拟(Emulate)同步,当模拟同步OK后再进行实际(actual)同步:
Synchronize Cluster Topology
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Ignore Cluster Verification Errors? [No] +
* Emulate or Actual? [Emulate] +
2、配置Cluster Resources
2.1、定义一个资源组(Define Resource Groups)
注意,在定义资源组的时候,要注意Participating Node Names的先后顺序。
Resource Group Name data_res New Resource Group Name [] Node Relationship cascading Participating Node Names [s85_a s85_b] 2.2、定义应用服务器(Define Application Servers) Server Name ora_app New Server Name [ ] start Script [/etc/start] Stop Script [/etc/stop] 2.3、修改资源组属性(Change/Show Resources for a Resource Group) data_res组: Resource Group Name data_res Node Relationship cascading Participating Node Names s85_a s85_b Service IP label [a_svc] Filesystems(default is all) [] Filesystems Consistency Check fsck Filesystems Recovery Method sequential Filesystems to Export [] Filesystems to NFS mount [] Volume Groups [datavg logvg] Concurrent Volume groups [] Raw Disk PVIDs [] Application Servers [ora_app]
2.4、同步资源组(Synchronize Cluster Resources)
在进行同步的时候可以先进行模拟(Emulate)同步,当模拟同步OK后再进行实际(actual)同步:
Synchronize Cluster Resources
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Ignore Cluster Verification Errors? [No] +
* Emulate or Actual? [Emulate] +
3、HACMP的启动及关闭
(1)启动过程:
#smit clstart
#tail –f /tmp/hacmp.out
May 22 17:29:23 EVENT COMPLETED: node_up_complete s85_a
如果/tmp/hacmp.out文件显示类似上述信息,则表明HACMP在本机上可以正常启动。
(2)关闭过程:
#smit clstop
4、HACMP功能的测试
在HACMP配置完成并检查没有错误后,即可按3的方法启动HACMP,进行功能测试。包括应用在同一台服务器的两个网卡能否切换,在两台服务器间能否切换等。可用命令:
#netstat-in
来看地址的切换情况
四、HACMP常见的故障解决方法
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, Mount 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 等,同样可以实现对故障的监控并采取相应措施。
《oracle大型数据库系统在AIX/unix上的实战详解》 集中答疑 45 何谓HACMP
====================================================================================