本系列文章的作者通過自己長期的實際項目工作經(jīng)歷,總結(jié)出了他對于 HACMP 設(shè)計實施的經(jīng)驗。本系列會分為 4部分,會向您詳細地介紹實施 HACMP 過程中會經(jīng)歷的各個過程,如設(shè)計,配置,安裝,測試等。本文為第 1 部分,會向您介紹 HAMCP實施的設(shè)計和安裝過程。
各廠商現(xiàn)有的 UNIX 服務(wù)器一般都擁有很高的可靠性,在這一點上 IBM 的 P 系列服務(wù)器表現(xiàn)尤為突出。但所有 UNIX服務(wù)器均無法達到如 IBM 大型主機 S/390 那樣的可靠性級別,這是開放平臺服務(wù)器的體系結(jié)構(gòu)和應(yīng)用環(huán)境所決定的。使用 IBM高可用性集群軟件 --HACMP,可以更好的保護關(guān)鍵業(yè)務(wù)應(yīng)用不受故障影響。
HACMP 是 High Availability Cluster Multi-Processing 的縮寫。HACMP 是 IBM公司在 P 系列 AIX 操作系統(tǒng)上的高可靠集群軟件,配置冗余,消除單點故障,保證整個系統(tǒng)連續(xù)可用性和安全可靠性。HACMP是利用網(wǎng)絡(luò)來偵測主機及網(wǎng)卡的狀況,搭配 AIX所提供的硬盤鏡像等功能,在主機、網(wǎng)卡、硬盤控制卡、硬盤或網(wǎng)絡(luò)發(fā)生故障時,自動切換到另一套備用元件上重新工作 ;若是主機故障還切換至備份機上繼續(xù)應(yīng)用系統(tǒng)的運行。
作為雙機系統(tǒng)的兩臺服務(wù)器同時運行 HACMP 軟件:
本文的實驗環(huán)境以雙機互備中比較復(fù)雜的多 service 多網(wǎng)絡(luò)的情況為例,其它類似設(shè)置可適當(dāng)簡化。
機器一覽表
節(jié)點機器名 | 操作系統(tǒng) | 應(yīng)用軟件 | HA 版本 |
---|---|---|---|
host2 | AIX5305-CSP | ORACLE 10g | HA5208 |
host1 | AIX5305-CSP | Tuxedo8.1 | HA5208 |
磁盤和 VG 規(guī)劃表
節(jié)點機器名 | 磁盤 | VG | VG MajorNumber |
---|---|---|---|
host1 | hdisk2 | host1vg | 101 |
host2 | hdisk3 | host2vg | 201 |
用戶和組規(guī)劃表
用戶 | USERID | 組 | 組 ID | 使用節(jié)點 |
---|---|---|---|---|
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 |
邏輯卷和文件系統(tǒng)規(guī)劃表
PP size:128M
節(jié)點機器名 | 邏輯卷 | 文件系統(tǒng) | 大小(pp) | 所有者 | 用途 |
---|---|---|---|---|---|
host1 | ora10runclv | /ora10runc | 40 | orarunc | ORACLE 客戶端軟件 |
host1 | tux81runlv | /tux81run | 30 | tuxedo | Tuxedo 軟件 |
host1 | bsx1lv | /bsx1 | 30 | bsx1 | 寶信 MES 應(yīng)用程序 |
host1 | xcomlv | /xcom | 30 | xcom | 寶信 xcom 通信軟件 |
host2 | ora10runlv | /ora10run | 60 | orarun | ORACLE 數(shù)據(jù)庫軟件 |
host2 | oradatalv | /oradata | 100 | orarun | 數(shù)據(jù)庫 |
路由規(guī)劃表
節(jié)點名 | 目的 | 路由 |
---|---|---|
host1 | default | 10.2.200.254 |
host2 | default | 10.2.200.254 |
HACMP 結(jié)構(gòu)表
集群名 : test_cluster
適配器名 | 功能 | 網(wǎng)絡(luò)名 | 網(wǎng)絡(luò)類型 | 屬性 | 節(jié)點名 | 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 |
應(yīng)用腳本起停設(shè)計
添加網(wǎng)關(guān)
運行 start_host1_app
運行 stop_host1_app
清理 vg 進程
添加網(wǎng)關(guān)
運行 start_host2_app
運行 stop_host1_app
清理 vg 進程
確認 host2 已啟動
整理路由
啟動主應(yīng)用程序
啟動通信程序
停通信程序
停應(yīng)用主程序
清理路由
如在 host1 機器上執(zhí)行 stop_host1_app
啟動 Oracle 數(shù)據(jù)庫及監(jiān)聽程序
如在 host1 機器上執(zhí)行 start_host1
停數(shù)據(jù)庫及監(jiān)聽程序
![]() ![]() |
![]()
|
萬事開頭難,對于一個有經(jīng)驗的 HACMP 工程師來說,會深知規(guī)劃的重要性,一個錯誤或混亂的規(guī)劃將直接導(dǎo)致實施的失敗和不可維護性。
HACMP 實施的根本目的不是安裝測試通過,而是在今后運行的某個時刻突然故障中,能順利的發(fā)生自動切換或處理,使得服務(wù)只是短暫中斷即可自動恢復(fù),使高可用性成為現(xiàn)實。
規(guī)劃前的需求調(diào)研
在做規(guī)劃之前,或者說一個準(zhǔn)備實施 HACMP 來保證高可用性的系統(tǒng)初步設(shè)計之前,至少需要調(diào)查了解系統(tǒng)的以下相關(guān)情況,這些都可能影響到 HACMP 的配置。
包括網(wǎng)段的劃分、路由、網(wǎng)絡(luò)設(shè)備的冗余等等在系統(tǒng)上線前的狀況和可提供條件,以及實施運行過程中可能出現(xiàn)的變更。
目前 IBM 的 HACMP 除了 AIX,還支持 Linux。
目前新裝機器都是 AIX5.3,即使安裝 HA5.4 也沒有問題。但如果安裝可能是在老機器上進行升級,需要仔細了解操作系統(tǒng)版本及補丁情況。
希望方式,如一備一,雙機互備,一備多,環(huán)形互備等等。
HACMP 版本確定
IBM HACMP 自從出了 5.2 版本后,到了 5.205后比較穩(wěn)定,并經(jīng)過我們自己充分的測試(見測試篇)和實踐證明(已有多個系統(tǒng)成功自動切換)。目前考慮到 HA 5.3 的過渡性,HACMPV5.4 的補丁還不夠,推薦版本為 HACMP V5.209。
IP 地址設(shè)計
IP 地址切換 (IPAT) 方式 有 3 種方式 :
圖 3,4和 5 中描述了三個主要的 IPAT 配置場景。
在分開的子網(wǎng)中包含 boot 和 standby 網(wǎng)卡。當(dāng)集群服務(wù)啟動的時候 boot 地址被換成 service地址。盡管這種方式有效性強,但是在需要實現(xiàn)多服務(wù) IP 地址的環(huán)境下這種方式是不可取的。集群的管理員不得不利用 pre- 和post-events 定制其環(huán)境建立額外的別名,
并且需要確認這些別名在下一次接管發(fā)生前被刪除。
HACMP 4.5 開始引入了 IPAT via Aliasing 作為缺省的拓撲模式。在這種新的模式中,standby網(wǎng)卡的功能被另外一個 boot 網(wǎng)卡替換。子網(wǎng)需求的不同點是還需要一個另外的子網(wǎng),每一個 boot 網(wǎng)卡需要它自己的子網(wǎng),并且任何service 或 persistent 的 IP 將在其本身的子網(wǎng)上操作,所以一共三個子網(wǎng)。當(dāng)集群服務(wù)啟動并且需要 service IP的時候,boot IP 并不消失。這個設(shè)計和第一種是不同的,在同一個 HACMP 網(wǎng)絡(luò)中有多個 service IP 存在并且通過別名來控制。
這種模式把底層的以太網(wǎng)卡藏到一個單一的“ent”接口之后。 該模式不是對前述任何一種方式的替換,而是可以和前述的任一種模式共同存在 。因為在每一個節(jié)點 EC 都被配置成冗余方式,可以在 HACMP 中使用 IP 別名定義它們每一個作為單一網(wǎng)卡網(wǎng)絡(luò)。因為在每個節(jié)點只有一個網(wǎng)卡被定義,所以只有兩個子網(wǎng),一個是用作 boot(每個節(jié)點的基本 IP 地址),另一個是用于提供高可用服務(wù)。
本文討論 實際工作中使用最多的為第 2 種 : 別名方式 (IPAT via Aliasing),逐步推薦第 3 種 。
這樣設(shè)計時就需要注意以下事項:
舉例來說,下面的地址將會由于網(wǎng)絡(luò)變更后打通合一后 可能造成沖突 :
設(shè)計人 | 機器名 | 服務(wù)地址 | 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 |
舉例來說,下面的地址由于 2 個系統(tǒng)分開設(shè)計,同時開啟將直接導(dǎo)致 2 個系統(tǒng)不可用。
boot 地址的設(shè)計表 1
設(shè)計人 | 機器名 | 服務(wù)地址 | 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 |
所以在設(shè)計時,我們建議 boot 地址的 IP 地址最后一段參照服務(wù)地址,這樣雖然可記憶性不是很好,但即使設(shè)計在同一網(wǎng)段,也可以避免上述錯誤發(fā)生。更改設(shè)計如下:
boot 地址的設(shè)計表 2
設(shè)計人 | 機器名 | 服務(wù)地址 | 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 |
此外,如果是每個網(wǎng)卡多個網(wǎng)口,記得設(shè)計時必須注意同一網(wǎng)絡(luò)的 boot 地址要分開到 2 塊網(wǎng)卡,以保證真正的冗余。
心跳設(shè)計
配置 HACMP 的過程中,除了 TCP/IP 網(wǎng)絡(luò)之外,您也可以在其它形式的網(wǎng)絡(luò)上,如串行網(wǎng)絡(luò)和磁盤總線上配置心跳網(wǎng)絡(luò)。
優(yōu)點:要求低,不需要任何額外硬件或軟件,即可實現(xiàn)。
缺點:占用 IP 地址,不能避免由于 TCP/IP 的軟件問題導(dǎo)致 HACMP 崩潰,系統(tǒng)不可用。
優(yōu)點:真正實現(xiàn)高可用性,不占用 IP 地址。
缺點:需要硬件支持,對于 p5 機器,需要新增異步卡,而中低端的機器的插槽有限。
優(yōu)點 : 不占用插槽,磁盤總線上的心跳網(wǎng)絡(luò)能夠在 TCP/IP 網(wǎng)絡(luò)資源有限的情況下提供額外的 HACMP 節(jié)點間的通信手段,并且能夠防止 HACMP 節(jié)點之間由于 TCP/IP 軟件出現(xiàn)問題而無法相互通信。
缺點:需要操作系統(tǒng)和存儲支持,如使用增強型卷組,此外對于 I/O 讀寫負荷高的應(yīng)用,也需要慎用。
正如 IBM 紅皮書所說,條件許可的情況下,強烈推薦使用串口網(wǎng)絡(luò),其次是磁盤心跳。
資源組設(shè)計
對于 HACMP 來講,服務(wù) IP 地址和磁盤 VG、文件系統(tǒng)、應(yīng)用服務(wù)器都是資源,如何規(guī)劃需要根據(jù)實際情況來,包括以下內(nèi)容:
資源組的數(shù)量即資源 :一般情況下每臺機器只要建立一個資源組即可,包括服務(wù) IP 地址、應(yīng)用服務(wù)器及 VG。但對于 2 節(jié)點的 oracle RAC 來講,就需要 3 個,2 個 IP 和應(yīng)用資源組,1 個并發(fā) VG 資源組。
現(xiàn)在不推薦具體確定 VG 里的文件系統(tǒng),這是因為確定后,有可能造成有些新增文件系統(tǒng)不在 HACMP 的控制范圍,結(jié)果是 HACMP 切換時由于這些文件系統(tǒng)沒有 unmount 掉而導(dǎo)致切換失敗。
資源組的策略 : 分 failover( 故障切換 ) 和 fallbak(回切)。一般選缺省,當(dāng)然你可以根據(jù)具體情況修正,如 oracle RAC 的并發(fā) VG 資源組的選擇就不一樣。
磁盤及 VG 設(shè)計
雖然實際上 HACMP 是靠 PVID來認磁盤的,但集群的機器上磁盤順序不一,磁盤對應(yīng)不一致會造成某種混亂。以致于安裝配置和維護時很容易產(chǎn)生各種人為錯誤,所以我們強烈建議機器上看到的磁盤和 VG 名稱都一一對應(yīng),此外 VG 的 MajorNumber 也需要預(yù)先設(shè)計規(guī)劃,以免不一致。
用戶及組設(shè)計
HA 要求所有切換需要用到的用戶必須所有節(jié)點對應(yīng),ID 完全相同,用戶運行的環(huán)境變量完全相同,即當(dāng)系統(tǒng)切換時,對使用該用戶的程序用戶即組設(shè)置沒有區(qū)別的。
如 host2 上 oracle 用戶為 orarun,host1 上的 orarun 必須為切換保留,ID 均為 209,host1 上平時用的 oracle 用戶就設(shè)為 orarunc。
邏輯卷和文件系統(tǒng)設(shè)計
HACMP 要求切換相關(guān)的文件系統(tǒng)和 lv 不能重名,如 host2 上 oracle 軟件目錄為 /ora10run,host1 上的 /ora10run 必須為切換保留,改為 /ora10runc。
此外,集群下相關(guān)的文件系統(tǒng)和 lv,在各個節(jié)點主機的定義也需要一致 , 如 /etc/filesystems 里是一致的,這個通過 importvg 或 HACMP 的 C-SPOC 來保證。
路由設(shè)計
對于有通信需求的主機,很可能對路由有一定要求,如本次實驗環(huán)境,就有 2 個網(wǎng)段走的不是缺省路由,需要設(shè)計清楚,最后在起停腳本實現(xiàn)。
應(yīng)用腳本設(shè)計
我們這里說的應(yīng)用,是包括數(shù)據(jù)庫在內(nèi)除 OS 和 HACMP 之外的所有程序,對于應(yīng)用程序的起停順序和各種要求,都需要預(yù)先和應(yīng)用人員加以溝通,并預(yù)先設(shè)計偽碼,最終編寫腳本實現(xiàn)。
安裝前提
操作系統(tǒng)版本要求:
實驗要求為 AIX5203 以上,實際 HA5.4 要求 AIX5301 和 AIX5206,具體安裝時可查看以下安裝版本的《High Availability Cluster Multi-Processing for AIX 5L Installation Guide》Prerequisites 一節(jié)。
系統(tǒng)參數(shù)要求
作為集群的各個節(jié)點機,我們建議各個參數(shù)最好完全一致,需要注意的參數(shù)有:
環(huán)境要求
此時,沒有建立任何 HACMP 占用設(shè)計 ID 相關(guān)的用戶和組,同樣也沒有建立 VG 和文件系統(tǒng),包括名稱沖突文件系統(tǒng)、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 |
顯示確認結(jié)果:
[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 ( 需要在所有節(jié)點上安裝)
如果是光盤,請插入光盤 , 執(zhí)行 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 |
安裝結(jié)束后,會報 failed,檢查除以下包沒裝上外,其它都已安裝上
clluster.hativoli
clusterhaview
netwiew
打補丁
注意,請不要忽略給 HACMP 打補丁這一步驟。其實對 HACMP來說,補丁是十分重要的。很多發(fā)現(xiàn)的缺陷都已經(jīng)在補丁中被解決了。當(dāng)嚴(yán)格的按照正確步驟安裝和配置完 HACMP 的軟件后,發(fā)現(xiàn) takeover有問題,IP 接管有問題,機器自動宕機等等千奇百怪的問題,其實大都與補丁有關(guān)。所以一定要注意打補丁這個環(huán)節(jié)。如 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 …… |
安裝結(jié)束后,仍會報 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 網(wǎng)站下載 :
http://www-933.ibm.com/eserver/support/fixes/
重啟機器
記住一定要重起機器 , 否則安裝將無法正常繼續(xù)。
#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 文件來控制兩臺機器之間的命令和數(shù)據(jù)交換,而是引進的一個新的進程 clcomd 。如果你查看 /etc/inittab 文件就會發(fā)現(xiàn)安裝完 HACMP 后,添加了一行:
clcomdES:2:once:startsrc -s clcomdES >/dev/console 2>&1 。 |
lslpp -l cluster.* Fileset Level State Description ---------------------------------------------------------------------------- Path: /usr/lib/objrepos ….. cluster.es.server.rte 5.2.0.9 COMMITTED ES Base Server Runtime …… |
ps -ef |grep clcomd root 115694 65676 0 Jun 07 - 2:09 /usr/es/sbin/cluster/clcomd -d |
本部分主要對 HACMP 的規(guī)劃和設(shè)計進行了詳盡的描述,對于 HACMP的實施,實際是相當(dāng)重要和具有實用價值的。同時,還對準(zhǔn)備和安裝部分進行了論述,也是實際 HACMP實施的整理和總結(jié),相信對大家有所幫助。后面將對 HACMP 的配置進行專門論述,從而形成完整的實施步驟。