曹云金郭德纲谁对谁错:HACMP 5.x 完全手册,第 1 部分:设计和安装

来源:百度文库 编辑:中财网 时间:2024/04/26 16:33:12
本系列文章的作者通过自己长期的实际项目工作经历,总结出了他对于 HACMP 设计实施的经验。本系列会分为 4部分,会向您详细地介绍实施 HACMP 过程中会经历的各个过程,如设计,配置,安装,测试等。本文为第 1 部分,会向您介绍 HAMCP实施的设计和安装过程。

前言

为什么需要 HACMP

各厂商现有的 UNIX 服务器一般都拥有很高的可靠性,在这一点上 IBM 的 P 系列服务器表现尤为突出。但所有 UNIX服务器均无法达到如 IBM 大型主机 S/390 那样的可靠性级别,这是开放平台服务器的体系结构和应用环境所决定的。使用 IBM高可用性集群软件 --HACMP,可以更好的保护关键业务应用不受故障影响。

HACMP 工作原理

HACMP 是 High Availability Cluster Multi-Processing 的缩写。HACMP 是 IBM公司在 P 系列 AIX 操作系统上的高可靠集群软件,配置冗余,消除单点故障,保证整个系统连续可用性和安全可靠性。HACMP是利用网络来侦测主机及网卡的状况,搭配 AIX所提供的硬盘镜像等功能,在主机、网卡、硬盘控制卡、硬盘或网络发生故障时,自动切换到另一套备用元件上重新工作 ;若是主机故障还切换至备份机上继续应用系统的运行。

作为双机系统的两台服务器同时运行 HACMP 软件:

  • 两台服务器的备份方式有二种 :
    • 一台服务器运行应用,另外一台服务器做为备份
    • 两台服务器除正常运行本机的应用外,同时又作为对方的备份主机 ;
  • 两台主机系统在整个运行过程中,通过 " 心跳线 " 相互监测对方的运行情况 ( 包括系统的软硬件运行、网络通讯和应用运行情况等 );
  • 一旦发现对方主机的运行不正常 ( 出故障 ) 时,故障机上的应用就会立即停止运行,本机 ( 故障机的备份机 ) 就会立即在自己的机器上启动故障机上的应用,把故障机的应用及其资源 ( 包括用到的 IP 地址和磁盘空间等 ) 接管过来,使故障机上的应用在本机继续运行 ;
  • 应用和资源的接管过程由 HACMP 软件自动完成,无需人工干预 ;
  • 当两台主机正常工作时,也可以根据需要将其中一台机上的应用人为切换到另一台机 ( 备份机 ) 上运行。

实验环境说明:

本文的实验环境以双机互备中比较复杂的多 service 多网络的情况为例,其它类似设置可适当简化。

  • 机器一览表

节点机器名 操作系统 应用软件 HA 版本 host2 AIX5305-CSP ORACLE 10g HA5208 host1 AIX5305-CSP Tuxedo8.1 HA5208
  • 磁盘和 VG 规划表

节点机器名 磁盘 VG VG MajorNumber host1 hdisk2 host1vg 101 host2 hdisk3 host2vg 201
  • 用户和组规划表

用户 USERID 组 组 ID 使用节点 orarrunc 210 dba 201 host1 tuxrun 301 bea 301 host1 bsx1 302 bea 301 host1 xcom 401 dba 201 host1 orarun 209 dba 201 host2
  • 逻辑卷和文件系统规划表

PP size:128M

节点机器名 逻辑卷 文件系统 大小(pp) 所有者 用途 host1 ora10runclv /ora10runc 40 orarunc ORACLE 客户端软件 host1 tux81runlv /tux81run 30 tuxedo Tuxedo 软件 host1 bsx1lv /bsx1 30 bsx1 宝信 MES 应用程序 host1 xcomlv /xcom 30 xcom 宝信 xcom 通信软件 host2 ora10runlv /ora10run 60 orarun ORACLE 数据库软件 host2 oradatalv /oradata 100 orarun 数据库
  • 路由规划表

节点名 目的 路由 host1 default 10.2.200.254 host2 default 10.2.200.254
  • HACMP 结构表

集群名 : test_cluster

适配器名 功能 网络名 网络类型 属性 节点名 IP 地址 host1_tty0 heartbeat host1_net_rs232 rs232 serial host1 host1_l2_boot1 boot1 host2_net_ether_2 ether public host1 10.2.2.1 host1_l1_boot1 boot1 host2_net_ether_1 ether public host1 10.2.1.1 host1_l2_svc Service host1_net_ether_2 ether public host1 10.2.200.1 host1_l1_svc1 Service host1_net_ether_1 ether public host1 10.2.100.1 host1_l1_svc2 Service host1_net_ether_1 ether public host1 10.2.101.1 host1_l2_boot2 boot2 host1_net_ether_2 ether public host1 10.2.12.1 host1_l1_boot2 boot2 host1_net_ether_1 ether public host1 10.2.11.1 host2_tty0 heartbeat host2_net_rs232 rs232 serial host2 host2_l2_boot1 boot1 host2_net_ether_2 ether public host2 10.2.2.2 host2_l1_boot1 boot1 host2_net_ether_1 ether public host2 10.2.1.2 host2_l2_svc service host2_net_ether_2 ether public host2 10.2.200.2 host2_l1_svc1 service host2_net_ether_1 ether public host2 10.2.100.2 host2_l1_svc2 service host2_net_ether_1 ether public host2 10.2.101.2 host2_l2_boot2 boot2 host2_net_ether_2 ether public host2 10.2.12.2 host2_l1_boot2 boot2 host2_net_ether_1 ether public host2 10.2.11.2

图 1 HACMP 示意图


图 2 实验环境示意图

应用脚本起停设计

  • start_host1:

    添加网关

    运行 start_host1_app

  • stop_host1:

    运行 stop_host1_app

    清理 vg 进程

  • start_host2:

    添加网关

    运行 start_host2_app

  • stop_host2:

    运行 stop_host1_app

    清理 vg 进程

  • start_host1_app:

    确认 host2 已启动

    整理路由

    启动主应用程序

    启动通信程序

  • stop_host1_app:

    停通信程序

    停应用主程序

    清理路由

  • start_host2_app:

    如在 host1 机器上执行 stop_host1_app

    启动 Oracle 数据库及监听程序

    如在 host1 机器上执行 start_host1

  • stop_host2_app:

    停数据库及监听程序





回页首

安装篇

规划

万事开头难,对于一个有经验的 HACMP 工程师来说,会深知规划的重要性,一个错误或混乱的规划将直接导致实施的失败和不可维护性。

HACMP 实施的根本目的不是安装测试通过,而是在今后运行的某个时刻突然故障中,能顺利的发生自动切换或处理,使得服务只是短暂中断即可自动恢复,使高可用性成为现实。

规划前的需求调研

在做规划之前,或者说一个准备实施 HACMP 来保证高可用性的系统初步设计之前,至少需要调查了解系统的以下相关情况,这些都可能影响到 HACMP 的配置。

  • 应用特点
    1. 对负荷的需求,如 CPU、内存、网络等特别是 I/O 的负载的侧重。
    2. 对起停的要求,如数据库重起可能需要应用重起等等。
    3. 对于自动化的限制,如重起需要人工判断或得到命令,需要在控制台执行。
  • 网络状况和规划

    包括网段的划分、路由、网络设备的冗余等等在系统上线前的状况和可提供条件,以及实施运行过程中可能出现的变更。

  • 操作系统情况

    目前 IBM 的 HACMP 除了 AIX,还支持 Linux。

    目前新装机器都是 AIX5.3,即使安装 HA5.4 也没有问题。但如果安装可能是在老机器上进行升级,需要仔细了解操作系统版本及补丁情况。

  • 主机设计
    1. 可能实施的机器网卡的数量 , 网卡是否只能是双口或更多。
    2. 是否有槽位增加异步卡
    3. 主机之间的距离,这影响到串口线的长度。
    4. 预计实施高可用性的情况
  • 希望实施 HACMP 的机器数量

    希望方式,如一备一,双机互备,一备多,环形互备等等。

HACMP 版本确定

IBM HACMP 自从出了 5.2 版本后,到了 5.205后比较稳定,并经过我们自己充分的测试(见测试篇)和实践证明(已有多个系统成功自动切换)。目前考虑到 HA 5.3 的过渡性,HACMPV5.4 的补丁还不够,推荐版本为 HACMP V5.209。

IP 地址设计

IP 地址切换 (IPAT) 方式   有 3 种方式 :

图 3,4和 5 中描述了三个主要的 IPAT 配置场景。

  • 第一个拓扑模式 :IPAT via Replacement

在分开的子网中包含 boot 和 standby 网卡。当集群服务启动的时候 boot 地址被换成 service地址。尽管这种方式有效性强,但是在需要实现多服务 IP 地址的环境下这种方式是不可取的。集群的管理员不得不利用 pre- 和post-events 定制其环境建立额外的别名,

并且需要确认这些别名在下一次接管发生前被删除。


图 3 IPAT via Replacement

  • 第二个拓扑模式:IPAT via Aliasing

HACMP 4.5 开始引入了 IPAT via Aliasing 作为缺省的拓扑模式。在这种新的模式中,standby网卡的功能被另外一个 boot 网卡替换。子网需求的不同点是还需要一个另外的子网,每一个 boot 网卡需要它自己的子网,并且任何service 或 persistent 的 IP 将在其本身的子网上操作,所以一共三个子网。当集群服务启动并且需要 service IP的时候,boot IP 并不消失。这个设计和第一种是不同的,在同一个 HACMP 网络中有多个 service IP 存在并且通过别名来控制。


图 4 IPAT via Aliasing

  • 第三种模式 :EthernetChannel(EC)

这种模式把底层的以太网卡藏到一个单一的“ent”接口之后。 该模式不是对前述任何一种方式的替换,而是可以和前述的任一种模式共同存在 。因为在每一个节点 EC 都被配置成冗余方式,可以在 HACMP 中使用 IP 别名定义它们每一个作为单一网卡网络。因为在每个节点只有一个网卡被定义,所以只有两个子网,一个是用作 boot(每个节点的基本 IP 地址),另一个是用于提供高可用服务。


图 5 IPAT via EthernetChannel

本文讨论 实际工作中使用最多的为第 2 : 别名方式 (IPAT via Aliasing),逐步推荐第 3 种

这样设计时就需要注意以下事项:

  • 网段设计:
    一个服务地址需要 3 个网段对应,boot 地址网段不能和服务地址一致。避免网络变更造成的系统不可用,boot 地址的网段不要和实际其它系统的网段一致。在网段比较紧张的地方,建议设计时询问网络管理员。

举例来说,下面的地址将会由于网络变更后打通合一后 可能造成冲突

设计人 机器名 服务地址 boot1 地址 boot2 地址 张三 app1_db 10.66.1.1 10.10.1.1 10.10.1.1 张三 app1_app 10.66.1.2 10.10.2.2 10.10.2.2 李四 app2_db 10.66.2.1 10.66.3.1 10.66.1.1 李四 app2_app 10.66.2.2 10.66.3.2 10.10.1.2 王五 app3_db 10.66.3.1 10.66.1.1 10.66.2.1 王五 app3_app 10.66.3.2 10.66.1.2 10.10.2.2
  • boot 地址的设计:
    不要和实际其它同网段机器的 boot 地址冲突,最好不同网段。即这个规划不能只考虑系统本身,还需要从同网段的高度考虑。

举例来说,下面的地址由于 2 个系统分开设计,同时开启将直接导致 2 个系统不可用。

boot 地址的设计表 1

设计人 机器名 服务地址 boot1 地址 boot2 地址 张三 app1_db 10.66.3.1 10.10.1.1 10.10.1.1 张三 app1_app 10.66.3.2 10.10.1.2 10.10.1.2 李四 app2_db 10.66.3.11 10.10.1.1 10.10.1.1 李四 app2_app 10.66.3.12 10.10.1.2 10.10.1.2

所以在设计时,我们建议 boot 地址的 IP 地址最后一段参照服务地址,这样虽然可记忆性不是很好,但即使设计在同一网段,也可以避免上述错误发生。更改设计如下:

boot 地址的设计表 2

设计人 机器名 服务地址 boot1 地址 boot2 地址 张三 app1_db 10.66.3.1 10.10.1.1 10.10.1.1 张三 app1_app 10.66.3.2 10.10.1.2 10.10.1.2 李四 app2_db 10.66.3.11 10.10.1.11 10.10.1.11 李四 app2_app 10.66.3.12 10.10.1.12 10.10.1.12

此外,如果是每个网卡多个网口,记得设计时必须注意同一网络的 boot 地址要分开到 2 块网卡,以保证真正的冗余。

心跳设计

配置 HACMP 的过程中,除了 TCP/IP 网络之外,您也可以在其它形式的网络上,如串行网络和磁盘总线上配置心跳网络。

  • TCP/IP 网络

优点:要求低,不需要任何额外硬件或软件,即可实现。

缺点:占用 IP 地址,不能避免由于 TCP/IP 的软件问题导致 HACMP 崩溃,系统不可用。

  • 串口网络

优点:真正实现高可用性,不占用 IP 地址。

缺点:需要硬件支持,对于 p5 机器,需要新增异步卡,而中低端的机器的插槽有限。

  • 磁盘心跳

优点 : 不占用插槽,磁盘总线上的心跳网络能够在 TCP/IP 网络资源有限的情况下提供额外的 HACMP 节点间的通信手段,并且能够防止 HACMP 节点之间由于 TCP/IP 软件出现问题而无法相互通信。

缺点:需要操作系统和存储支持,如使用增强型卷组,此外对于 I/O 读写负荷高的应用,也需要慎用。

正如 IBM 红皮书所说,条件许可的情况下,强烈推荐使用串口网络,其次是磁盘心跳。

资源组设计

对于 HACMP 来讲,服务 IP 地址和磁盘 VG、文件系统、应用服务器都是资源,如何规划需要根据实际情况来,包括以下内容:

资源组的数量即资源 :一般情况下每台机器只要建立一个资源组即可,包括服务 IP 地址、应用服务器及 VG。但对于 2 节点的 oracle RAC 来讲,就需要 3 个,2 个 IP 和应用资源组,1 个并发 VG 资源组。

现在不推荐具体确定 VG 里的文件系统,这是因为确定后,有可能造成有些新增文件系统不在 HACMP 的控制范围,结果是 HACMP 切换时由于这些文件系统没有 unmount 掉而导致切换失败。

资源组的策略 : 分 failover( 故障切换 ) 和 fallbak(回切)。一般选缺省,当然你可以根据具体情况修正,如 oracle RAC 的并发 VG 资源组的选择就不一样。

磁盘及 VG 设计

虽然实际上 HACMP 是靠 PVID来认磁盘的,但集群的机器上磁盘顺序不一,磁盘对应不一致会造成某种混乱。以致于安装配置和维护时很容易产生各种人为错误,所以我们强烈建议机器上看到的磁盘和 VG 名称都一一对应,此外 VG 的 MajorNumber 也需要预先设计规划,以免不一致。

用户及组设计

HA 要求所有切换需要用到的用户必须所有节点对应,ID 完全相同,用户运行的环境变量完全相同,即当系统切换时,对使用该用户的程序用户即组设置没有区别的。

如 host2 上 oracle 用户为 orarun,host1 上的 orarun 必须为切换保留,ID 均为 209,host1 上平时用的 oracle 用户就设为 orarunc。

逻辑卷和文件系统设计

HACMP 要求切换相关的文件系统和 lv 不能重名,如 host2 上 oracle 软件目录为 /ora10run,host1 上的 /ora10run 必须为切换保留,改为 /ora10runc。

此外,集群下相关的文件系统和 lv,在各个节点主机的定义也需要一致 , 如 /etc/filesystems 里是一致的,这个通过 importvg 或 HACMP 的 C-SPOC 来保证。

路由设计

对于有通信需求的主机,很可能对路由有一定要求,如本次实验环境,就有 2 个网段走的不是缺省路由,需要设计清楚,最后在起停脚本实现。

应用脚本设计

我们这里说的应用,是包括数据库在内除 OS 和 HACMP 之外的所有程序,对于应用程序的起停顺序和各种要求,都需要预先和应用人员加以沟通,并预先设计伪码,最终编写脚本实现。

准备

安装前提

  • 操作系统版本要求:

实验要求为 AIX5203 以上,实际 HA5.4 要求 AIX5301 和 AIX5206,具体安装时可查看以下安装版本的《High Availability Cluster Multi-Processing for AIX 5L Installation Guide》Prerequisites 一节。

  • 系统参数要求

作为集群的各个节点机,我们建议各个参数最好完全一致,需要注意的参数有:

    • 异步 I/O 服务进程配置(Asynchronous I/O servers)
    • 用户最大进程数
    • 系统时间
    • 用户缺省的 limits 参数
    • 其它可能影响应用的参数  
  • 环境要求

此时,没有建立任何 HACMP 占用设计 ID 相关的用户和组,同样也没有建立 VG 和文件系统,包括名称冲突文件系统、lv 和 Major numver 冲突的 VG。

  • 用户和组确认
[host1][root][/]>lsuser -a id ALL            root id=0            daemon id=1            bin id=2            sys id=3            adm id=4            uucp id=5            ……            [host2][root][/]>lsuser -a id ALL            root id=0            daemon id=1            ……            

  • 文件系统确认
[host1][root][/]>df -k            Filesystem 1024-blocks Free %Used Iused %Iused Mounted on            /dev/hd4 524288 487820 7% 3276 3% /            /dev/hd2 7077888 1868516 74% 91290 18% /usr            /dev/hd9var 524288 458364 13% 991 1% /var            /dev/hd3 917504 826700 10% 120 1% /tmp            /dev/hd1 655360 524856 20% 291 1% /home            /proc - - - - - /proc            /dev/hd10opt 1179648 589072 51% 11370 8% /opt            [host2][root][/]>df -k            …            

  • 安装包要求:

RSCT 2.3.6.0 或更高版本。

使用以下命令进行确认:

lslpp –l|grep rsct

以下的包也是必须要安装的:

rsct.*            bos.adt.lib            bos.adt.libm            bos.adt.syscalls            bos.net.tcp.client            bos.net.tcp.server            bos.rte.SRC            bos.rte.libc            bos.rte.libcfg            bos.rte.libcur            bos.rte.libpthreads            bos.rte.odm            

显示确认结果:

[host1][root][/]>lslpp -l rsct.*            Fileset Level State Description            ----------------------------------------------------------------------------            Path: /usr/lib/objrepos            rsct.basic.HACMP 2.4.4.0 COMMITTED RSCT Basic Function (HACMP/ES            Support)            rsct.basic.rte 2.4.4.0 COMMITTED RSCT Basic Function            rsct.basic.sp 2.4.4.0 COMMITTED RSCT Basic Function (PSSP            Support)            ……            [host2][root][/]>lslpp -l rsct.*            ……            

如果您要安装并行的资源组(如 oracle RAC ),还要安装下面的包:

bos.rte.lvm.rte (5.2.0.25 or higher)

bos.rte.lvm.rte

bos.clvm.enh

软件安装

安装 HACMP5.2 ( 需要在所有节点上安装)

如果是光盘,请插入光盘 , 执行 smitty install_latest

 Install Software            Type or select values in entry fields.            Press Enter AFTER making all desired changes.            [Entry Fields]            * INPUT device / directory for software /dev/cd0            * SOFTWARE to install [_all_latest]            …..            ACCEPT new license agreements? yes            Preview new LICENSE agreements? no            

如果是安装盘拷贝,请进入 cd installp/ppc 目录,smitty install_latest

 Install Software            Type or select values in entry fields.            Press Enter AFTER making all desired changes.            [Entry Fields]            * INPUT device / directory for software  .            * SOFTWARE to install [_all_latest]            …..            ACCEPT new license agreements? yes            Preview new LICENSE agreements? No            

安装结束后,会报 failed,检查除以下包没装上外,其它都已安装上

clluster.hativoli

clusterhaview

netwiew

打补丁

注意,请不要忽略给 HACMP 打补丁这一步骤。其实对 HACMP来说,补丁是十分重要的。很多发现的缺陷都已经在补丁中被解决了。当严格的按照正确步骤安装和配置完 HACMP 的软件后,发现 takeover有问题,IP 接管有问题,机器自动宕机等等千奇百怪的问题,其实大都与补丁有关。所以一定要注意打补丁这个环节。如 HACMP 为 5205或补丁 IY73937。

使用 smitty install_latest 命令来安装:

IY53044 - Latest HACMP for AIX R510 Fixes as of January 2004            [host1][root][/soft_ins/ha52/patch]>ls            .toc cluster.es.cspoc.dsh.5.2.0.21.bff            cluster.adt.es.client.include.5.2.0.3.bff ……            

安装结束后,仍会报 failed,检查除以下包没装上外,其它都已安装上:

cluster.doc.en_US.pprc

cluster.doc.en_US.websphere

cluster.es.ercmf

cluster.es.pprc

cluster.es.svcpprc

cluster.es.websphere

cluster.xd.glvm

补丁可在 IBM 网站下载 :

http://www-933.ibm.com/eserver/support/fixes/


图 6 补丁下载示意图

重启机器

记住一定要重起机器 , 否则安装将无法正常继续。

安装确认


1)确认 inittab:
            #egrep "HA|clcomd" /etc/inittab            harc:2:wait:/usr/es/sbin/cluster/etc/harc.net # HACMP for AIX network startup            clcomdES:2:once:startsrc -s clcomdES >/dev/console 2>&1            clinit:a:wait:/bin/touch /usr/es/sbin/cluster/.telinit            # HACMP for AIX These must be the last entries of run level a in inittab!            pst_clinit:a:wait:/bin/echo Created /usr/es/sbin/cluster/.telinit > /dev/console            # HACMP for AIX These must be the last entries of run level a in inittab!            

在 HACMP 5.1 以后的版本中 为了安全起见,不再使用 /.rhosts 文件来控制两台机器之间的命令和数据交换,而是引进的一个新的进程 clcomd 。如果你查看 /etc/inittab 文件就会发现安装完 HACMP 后,添加了一行:

clcomdES:2:once:startsrc -s clcomdES >/dev/console 2>&1 。            


2)确认安装和补丁包:(着重确认 cluster.es.server.rte)
            lslpp -l cluster.*            Fileset Level State Description            ----------------------------------------------------------------------------            Path: /usr/lib/objrepos            …..            cluster.es.server.rte 5.2.0.9 COMMITTED ES Base Server Runtime            ……            


3)确认进程
            ps -ef |grep clcomd            root 115694 65676 0 Jun 07 - 2:09 /usr/es/sbin/cluster/clcomd -d            

总结

本部分主要对 HACMP 的规划和设计进行了详尽的描述,对于 HACMP的实施,实际是相当重要和具有实用价值的。同时,还对准备和安装部分进行了论述,也是实际 HACMP实施的整理和总结,相信对大家有所帮助。后面将对 HACMP 的配置进行专门论述,从而形成完整的实施步骤。