1、IBM HACMP 双机服务器系统的解决方案上一篇 / 下一篇 2007-06-26 10:08:18 查看( 1362 ) / 评论( 0 ) / 评分( 0 / 0 ) Hacmp(High Availability Cluster Multi-Processing)双机热备份软件的主要功能是提高客户计算机系统及其应用的可靠性,而不是单台主机的可靠性。一、Hacmp 双机系统的工作原理HACMP 的工作原理是利用 LAN 来监控主机及网络、网卡的状态。在一个 HACMP 环境中有 TCP/IP 网络和非 TCP/IP 网络。TCP/IP 网络即应用客户端访问的公共网,该网可以是大多数AIX
2、 所支持的网络,如 Ethernet,T.R.,FDDI,ATM,SOCC,SLIP,等等。 非 TCP/IP 网络用来为 HACMP 对 HA 环境(Cluster)中的各节点进行监控而提供的一个替代 TCP/IP 的通讯路径,它可以是用 RS232 串口线将各节点连接起来,也可以是将各节点的 SCSI 卡或 SSA 卡设置成 Target Mode 方式。1 、作为双机系统的两台服务器(主机 A 和 B)同时运行 Hacmp 软件;2、服务器除正常运行自机的应用外,同时又作为对方的备份主机;3、两台主机系统( A 和 B)在整个运行过程中,通过 “心跳线”相互监测对方的运行情况(包括系统的
3、软硬件运行、网络通讯和应用运行情况等);4、一旦发现对方主机的运行不正常(出故障)时,故障机上的应用就会立即停止运行,本机(故障机的备份机)就会立即在自己的机器上启动故障机上的应用,把故障机的应用及其资源(包括用到的 IP 地址和磁盘空间等)接管过来,使故障机上的应用在本机继续运行;5、应用和资源的接管过程由 Ha 软件自动完成,无需人工干预;6 、当两台主机正常工作时,也可以根据需要将其中一台机上的应用人为切换到另一台机(备份机) 上运行。HACMP 双机系统结构图(点击看大图) 二、Hacmp 安装配置前需作的准备工作1 、划分清楚两台服务器主机各自要运行的应用(如 A 机运行应用,B 机
4、作为 standby);2 、给每个应用(组)分配 Service_ip、Standby_ip 、boot_ip 和心跳线 tty,如:主机 A(运行应用):Service_ip: 172.16.1.1Standby_ip: 172.16.2.1Boot_ip: 172.16.1.3主机 B(standby ):Service_ip: 172.16.1.2Standby_ip: 172.16.2.2Boot_ip: 172.16.1.43 、按照各主机的应用的要求,建立好各自的磁盘组,并分配好磁盘空间;4 、根据 Ha 软件的要求,对服务器操作系统的参数作必要的修改。三、IBM HACMP 双
5、机服务器系统的解决方案HACMP 的安装配置步骤如下:(一)在两台服务器上分别安装 HACMP 软件#smit installp(二)分别检查两台主机上安装的软件是否成功#/usr/sbin/cluster/diag/clverifysoftwareclusterclverifysoftware Valid Options are:lppclverify.software lpp若没有 error 出现则安装成功。(三)分别配置两台服务器的 boot IP 地址和 Standby IP 地址,保证 boot 网和 Standby 网能 ping通(用 smit tcpip 命令),用 nets
6、tat 命令检查配置是否正确:#netstat -i(四)利用 smit tty 在两台主机上增加一个 TTY 接口,配置心跳线(RS232):#smitty ttyTTY tty0TTY type ttyTTY interface rs232Descrption Asynchronous TerminalStatus AvailableLocation 20-70-01-00Parent adapter sa2PORT number 0 Enable LOGIN disable BAUD rate 9600 PARITY none BITS per character 8 Number of
7、 STOP BITS 1用 lsdev Cc tty 查看 tty 是否配置好。#lsdev Cc tty在两台上分别输入如下命令:S85_1# cat /etc/hosts /dev/tty0S85_2# cat 如果在 S85_2 机能接收到信息,则表明心跳线已经配置好。(五)具体配置及技巧注:HACMP 的配置(或修改配置)只需要在其中的一台主机上进行,当配置(或修改)完毕后使用同步命令将配置结果传到另外一台主机上。一般选 S85_1 在进行配置。在 S85_1 上运行 smit hacmp,然后按照下面的步骤进行配置:#smit hacmp 1 、 Cluster Configurat
8、ion1.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)* Adap
9、ter IP Label a_svc Network Type ether Network Name ethnet Network Attribute public Adapter Function service Adapter Identifier 172.16.1.1Adapter Hardware Address Node Name s85_a 修改/etc/hosts 及/.rhosts 文件,如:修改 /etc/hosts 文件,增加以下内容:172.16.1.1 a_svc172.16.1.2 b_svc172.16.1.3 a_boot172.16.1.4 b_boot172.
10、16.2.1 a_stdby172.16.2.2 b_stdby修改/.rhosts 文件,增加以下内容:a_svcb_svca_bootb_boota_stdbyb_stdby1.2、同步 cluster(Cluster Configuration/ Cluster Topology/ Synchronize Cluster Topology)在进行同步的时候可以先进行模拟(Emulate )同步,当模拟同步 OK 后再进行实际(actual) 同步:Synchronize Cluster TopologyType or select values in entry fields.Press
11、 Enter AFTER making all desired changes.TOP Entry FieldsIgnore Cluster Verification Errors? No +* Emulate or Actual? Emulate +2、配置 Cluster Resources2.1、定义一个资源组(Define Resource Groups)注意,在定义资源组的时候,要注意 Participating Node Names 的先后顺序。 Resource Group Name data_res New Resource Group Name Node Relationsh
12、ip cascading Participating Node Names s85_a s85_b 2.2、定义应用服务器(Define Application Servers)Server Name ora_app New Server Name start scrpt /etc/startStop scrpt /etc/stop2.3、修改资源组属性(Change/Show Resources for a Resource Group)data_res 组: Resource Group Name data_resNode Relationship cascadingParticipati
13、ng Node Names s85_a s85_bService IP label a_svcFilesystems(default is all) Filesystems Consistency Check fsck Filesystems Recovery Method sequentialFilesystems to Export Filesystems to NFS mount Volume Groups datavg logvg Concurrent Volume groups Raw Disk PVIDs Application Servers ora_app2.4、同步资源组(S
14、ynchronize Cluster Resources)在进行同步的时候可以先进行模拟(Emulate )同步,当模拟同步 OK 后再进行实际(actual) 同步:Synchronize Cluster ResourcesType or select values in entry fields.Press Enter AFTER making all desired changes.TOP Entry FieldsIgnore Cluster Verification Errors? No +* Emulate or Actual? Emulate +3、 HACMP 的启动及关闭 (1
15、 )启动过程:#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 clstop4、 HACMP 功能的测试在 HACMP 配置完成并检查没有错误后,即可按 3 的方法启动 HACMP,进行功能测试。包括应用在同一台服务器的两个网卡能否切换,在两台服务器间能否切换等。可用命令:#netstat-in 来看地址的切换情况四、HACMP 常见的
16、故障解决方法HACMP 将诊测并响应于三种类型的故障:1 网卡故障,2 网络工作,3 节点故障。下面就这三种故障分别进行介绍。 1、网卡故障 HACMP 的群集结构中,除了 TCP/IP 网络以外,还有一个非 TCP/IP 网络,它实际上是一根“ 心跳”线,专门用来诊测是节点死机还是仅仅网络发生故障。如下图所示,一旦节点加入了 Cluster(即该节点上的HACMP 已正常启动),该节点的各个网卡、非 TCP/IP 网络就会不断地接收并送 Keep-Alive 信号,K-A 的参数是可调 的,HA 在连续发送一定数量个包都丢失后就可确认对方网卡,或网络,或节点发生故障。因此,有了 K-A 后,
17、HACMP 可以很轻易地发现网卡故障,因为一旦某块网卡发生故障发往该块网卡的 K-A就会丢失。此时 node 1 上的 cluster manager( HACMP 的“大脑”)会产生一个 swap-adapter 的事件,并执行该事件的 scrpt(HACMP 中提供了大部分通用环境下的事件 scrpts,它们是用标准 AIX 命令和 HACMP 工具来写的)。每个节点上都有至少两块网卡,一块是 service adapter,提供对外服务,另一块是 standby adapter,它的存在只有 cluster manager 知道,应用和 client 并不知道。一旦发生 swap-ada
18、pter 事件后,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 仍然正常而网络发生故障。此时
19、 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 地址接管和重新启动应用由
20、HACMP 来实现,而其他是由 AIX 来完成。 当整个节点发生故障时,HACMP 将故障节点的 service IP address 转移到备份节点上,使网络上的client 仍然使用这个 IP 地址,这个过程称为 IP 地址接管(IPAT),当一个节点 down 掉后,如果设置了 IP地址接管,网络上的 clients 会自动连接到接管节点上;同样,如果设置了应用接管,该应用会在接管节点上自动重启,从而使系统能继续对外服务。对于要实现接管的应用,只需在 HACMP 中把它们设置成application server,并告诉 HACMP 启动这个应用的 start scrpt 的全路径名和停
21、止该应用的 stop scrpt 的全路径名。由此可见,应用接管的配置在 HACMP 中十分简单,重要的是 start scrpt 和 stop scrpt 的写作,这需要用户对自己应用的了解。4、其他故障 HACMP 只去检测网卡、网络和节点是否发生故障,并作出相应的转移、接管行为。对于其他故障,那么 HACMP 缺省不作任何动作。 a、硬盘故障 一般我们都将硬盘设置成 RAID-5 方式或 mirror 方式,从而提供硬盘的高可用性。RAID-5 将奇偶较验位分散在硬盘组中,因此当一组内的一个硬盘坏掉,组内的其他硬盘可以通过奇偶较验位将该硬盘上的数据恢复出来。RAID-5 方式一般是由硬件
22、实现的,如下 7133 的 SSA 适配器,而且如果同一组内的两个硬盘坏掉,该组硬盘的数据很可能就会全部丢失。mirror 方式是将同一个数据写到至少两个物理外置上,因此它的效率没有 RAID-5 好,而且用盘量大,但安全性比 RAID-5 高,而且它易于实现,通过 AIX 中的(Logic Volume Management)可以很方便地设置。 b、硬盘控制卡 存储设备连接到主机上都必须通过一块控制卡,SCSI 设备是 SCSI Adapter, SSA 设备是 SSA Adapter,如果这块卡坏掉,与之连接的外设就无法利用。有几种办法可以解决这个问题。 一种办法是用多个 adapter。
23、每个主机上都有两块或两块以上 adapter,分别连接 mirror 的数据,因此无论是硬盘坏掉,还是 Adapter 坏掉,所有好数据还是可以被主机利用,不会出现单点故障。这种方法实现起来并不难,但必须配置多块 adapter,而且必须采用数据 mirror 方式。这种方法也不用通过 HACMP 来实现。 另一种方法仍只用一块 adapter,利用 HACMP 中的 Error Notification Facility( 错误通告机制)来解决。 Error Notification Facility 是 HACMP 提供的对其他设备的监控工具,任何报告给 AIX 的错误(error)都能被
24、捕获被采取相应措施。HACMP 提供了 smit 界面,使配置简单化。 我们已知道,用 LVM 可实现硬盘镜像,当一个盘坏掉,仍有一份数据在镜像盘里,数据仍可进行读写,但此时数据不再有可用性,若镜像盘也坏掉则数据全部丢失。所以在此例中,PV 丢失(LVM_PVMISS) 的信息会大幅显示在控制台面上,从而提醒用户去仔细查看 error log 找出故障并修复它。同样,此例中HACMP 提供了界面,结合 AIX 的功能,从而监控故障的发生。 c.、应用故障 如果用户的应用有 kernel call 调用,或以 root 身份来启动等,一旦应用发生故障,很容易导致操作系统 down 掉,发生死机,
25、这时实际上等于节点故障, 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 等,同样可以实现对故障的监控并采取相应措施。