Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44820485
  • 博文数量: 384
  • 博客积分: 9990
  • 博客等级: 中将
  • 技术积分: 5644
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-05 17:44
文章分类

全部博文(384)

文章存档

2011年(1)

2008年(383)

分类: 服务器与存储

2008-06-07 19:50:14

一、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 等,同样可以实现对故障的监控并采取相应措施。

(责任编辑:)


阅读(959) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~