HACMP 5.x 完全手冊(cè),第 4 部分:腳本設(shè)計(jì)和經(jīng)驗(yàn)共享.docx_第1頁(yè)
HACMP 5.x 完全手冊(cè),第 4 部分:腳本設(shè)計(jì)和經(jīng)驗(yàn)共享.docx_第2頁(yè)
HACMP 5.x 完全手冊(cè),第 4 部分:腳本設(shè)計(jì)和經(jīng)驗(yàn)共享.docx_第3頁(yè)
HACMP 5.x 完全手冊(cè),第 4 部分:腳本設(shè)計(jì)和經(jīng)驗(yàn)共享.docx_第4頁(yè)
HACMP 5.x 完全手冊(cè),第 4 部分:腳本設(shè)計(jì)和經(jīng)驗(yàn)共享.docx_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

腳本部分HACMP 的作用在于關(guān)鍵時(shí)刻能根據(jù)發(fā)生的情況自動(dòng)通過(guò)預(yù)先制定好的策略進(jìn)行相應(yīng)的操作,如切換。使得用戶(hù)經(jīng)過(guò)短暫的中斷即可繼續(xù)使用服務(wù)。而對(duì)于用戶(hù)來(lái)說(shuō),“服務(wù)可用”才是 HACMP 切換成功的標(biāo)志,而這一點(diǎn)不光是 HACMP 配置本身,還大大倚賴(lài)于啟停腳本的可用性。自 IBM 的 HACMP5205 以后,趨于穩(wěn)定,BUG 很少。這使得 HACMP 切換不成功的主要原因集中在啟停腳本的問(wèn)題上。而很多時(shí)候,腳本的問(wèn)題是非常隱蔽和難以測(cè)試的,所以在編寫(xiě)啟停腳本時(shí)需要考慮周全,系統(tǒng)上線后要仔細(xì)維護(hù)。通過(guò)多年的實(shí)踐,我們形成了自己的一套腳本編制方式,共享出來(lái),供大家參考?;仨?yè)首腳本規(guī)劃啟停方式對(duì)于啟動(dòng)腳本,完全放在后臺(tái),不影響 HACMP 的切換。對(duì)于停止腳本,通過(guò)后臺(tái)啟動(dòng),前臺(tái)檢查的方式進(jìn)行,并使用清理 VG 的進(jìn)程,確保停止成功。由于啟停是由啟停各個(gè)部件啟動(dòng)組成的,如 host1 的啟停就是啟停 tuxedo 和 xom 軟件組成,host2 的啟停就是有啟動(dòng) DB 和 listener 組成。我們把主機(jī)的啟動(dòng)分割為多個(gè)部分,這樣綜合寫(xiě)出共性的公用腳本程序,這樣雖然第一次編寫(xiě)測(cè)試這些公用程序會(huì)花費(fèi)大量的時(shí)間和精力,但最終將大大減輕管理員的重復(fù)工作,簡(jiǎn)化了腳本的編寫(xiě),保證了腳本的質(zhì)量。文件存放目錄表目錄用途舉例/usr/sbin/cluster/app存放 HA 啟停腳本/usr/sbin/cluster/app/log存放啟停應(yīng)用的詳細(xì) log/home/scripts/hostname存放應(yīng)用啟停腳本/home/scripts/host1/tmp存放啟停應(yīng)用的 log/tmp/ha_app.out文件命名表:以主機(jī)名為特征進(jìn)行命名,這樣比較方便使用和區(qū)分。腳本命名規(guī)則舉例HA 啟動(dòng)腳本start_hostnamestart_host1應(yīng)用啟動(dòng)腳本start_hostname_appstart_host1_appHA 停止腳本stop_hostnamestop_host2應(yīng)用停止腳本stop_hostname_appstop_host2_app啟停應(yīng)用 log/tmp/ha_app.out啟動(dòng)應(yīng)用詳細(xì) logstart_hostname_appyyyymmddHHMMlogstart_host1_app200712241722.log停止應(yīng)用詳細(xì) logstop_hostname_appyyyymmddHHMMlogstop_host1_app200712241722.log啟停跟蹤為了便于跟蹤和閱讀,應(yīng)用的啟停 log 不寫(xiě)入 /tmp/hacmp.out,而是另行輸出到單獨(dú)的 log。一般情況下,管理員只需跟蹤 /tmp/ha_app.out 即可,一直等不到結(jié)束,再查看 /usr/sbin/cluster/app/log 下詳細(xì) log。host2root/tail -f /tmp/ha_app.out!Starting- host2 at Tue Dec 18 11:17:51 BEIST 2007Waiting- DB testdb - start,Press any key to cancel.DB testdb is started!Waiting- listener testdb - start,Press any key to cancel. testdb - LISTENER is started!Waiting- listener testdb port 1521- start,Press any key to cancel.LISTENER testdb port 1521 is listening!start eai1d1 successful! at Tue Dec 18 11:20:43 BEIST 2007!host2root/cd /usr/sbin/cluster/apphost2root/more start_host2_app200712181117.log!Starting- eai1d1 at Mon Dec 24 16:06:35 BEIST 2007Mon Dec 24 16:06:35 BEIST 2007Waiting- DB eaiz1dev - start,Press any key to cancel.SQL*Plus: Release 10.2.0.2.0 - Production on Mon Dec 24 16:06:35 2007Copyright (c) 1982, 2005, Oracle. All Rights Reserved.Connected to an idle instance.SQL ORACLE instance started.Total System Global Area 1543503872 bytesFixed Size 2071488 bytesVariable Size 369099840 bytesDatabase Buffers 1157627904 bytesRedo Buffers 14704640 bytes.Database mounted.Database opened.SQL Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production編寫(xiě)注意事項(xiàng):值得注意的是,經(jīng)過(guò)測(cè)試和實(shí)際使用發(fā)現(xiàn),由 HA 啟動(dòng)腳本時(shí),如有嵌套,相對(duì)目錄執(zhí)行程序?qū)⒉荒苌?,必須?xiě)成絕對(duì)路徑。如下面的情況將導(dǎo)致錯(cuò)誤:start_host1: nohup /home/scripts/host1/start_host1_app &start_host1_app: /home/scripts/comm/start_db.sh orarun testdb 1521start_db.sh: cd /home/scripts/commcheck_db_main.sh testdbcheck_db_main.sh not found需要改寫(xiě)為start_db.sh: /home/scripts/comm/check_db_main.sh testdb回頁(yè)首啟動(dòng)腳本由于 HACMP 的啟動(dòng)和應(yīng)用的啟動(dòng)可以分開(kāi),為避免應(yīng)用腳本的啟動(dòng)不正常導(dǎo)致 HACMP 的報(bào)錯(cuò),建議將 HACMP 的啟動(dòng)腳本簡(jiǎn)化,將啟動(dòng)應(yīng)用的部分放在另一個(gè)應(yīng)用啟動(dòng)腳本里?;谝?guī)劃,start_host2_app 的啟動(dòng)腳本使用了公用程序 start_db.sh 和 wait_db_start.sh,源代碼如下,供大家參考:start_db.sh代碼:#start_db.sh oracle_sid listener_nameORACLE_SID=$1sqlplus / as sysdba $SCRIPTS_PATH/$HA_LOGnohup /home/scripts/comm/tail_log.sh start_app $SCRIPTS_PATH/$HA_LOG !|started!|Waiting-|listening!|starting-|successful! successful! /tmp/ha_app.out &sleep 1nohup /home/scripts/$MACHINE/start_$MACHINE_app ha $HA_LOG &exit 0回頁(yè)首停止腳本由于必須保證應(yīng)用正常停止,才切換過(guò)去,所以停止腳本的正常結(jié)束才是 HACMP 停止應(yīng)用服務(wù)器成功的標(biāo)志。停止腳本需要設(shè)定一個(gè)等待時(shí)間的閥值,超過(guò)這個(gè)閥值,將進(jìn)行異常中止腳本的運(yùn)行。此外,為了防止停止時(shí)出現(xiàn)停不下來(lái)的現(xiàn)象,導(dǎo)致 HACMP 超時(shí)報(bào) too long 廣播,需要注意以下停止腳本的編寫(xiě):1. 停止數(shù)據(jù)庫(kù)腳本停止數(shù)據(jù)庫(kù)之前,必須記得先清理掉遠(yuǎn)程連接的用戶(hù),這樣才能保證數(shù)據(jù)庫(kù)能在可預(yù)測(cè)的時(shí)間內(nèi)正常停止。如 oracle 數(shù)據(jù)庫(kù)停止之前,建議增加以下代碼:ps -ef|grep ora|grep $ORACLE_SID|grep LOCAL=NO|awk print kill -9 $2|sh如果數(shù)據(jù)庫(kù)超過(guò)一段時(shí)間仍停不下來(lái),必須啟動(dòng)異常停止腳本。2. 最后加上清理文件系統(tǒng)的腳本這一點(diǎn)很容易被忽略,因?yàn)橛袝r(shí)即使應(yīng)用正常停止,以下原因都可能導(dǎo)致導(dǎo)致 HACMP 不能 umount 這個(gè)文件系統(tǒng) :o 有用戶(hù)登錄在該文件系統(tǒng)下;o 有其他程序使用了該文件系統(tǒng)下的庫(kù)文件;o 該文件系統(tǒng)與應(yīng)用無(wú)關(guān),但正在被使用。結(jié)果均會(huì)最終導(dǎo)致 HACMP 停止不了該節(jié)點(diǎn),切換失敗?;谶@個(gè)原因,我們編寫(xiě)了 kill_vg_user.sh, 使用起來(lái)非常方便有效,都放在 /home/scripts/comm 下?,F(xiàn)提供源代碼,供大家使用和指正。kill_vg_user.sh代碼 :#kill_vg_user.sh vg_name#kill_vg_user.sh erpapp_vgif $# -le 0 ;then echo no para, example:kill_vg_user.sh erpapp_vg exitfi#mainSCRIPTS_PATH=dirname $0df -k|awk print $7 |grep -v Mounted /tmp/fs_mounted.txtfor i in lsvg -l $1 |grep -vE N/A|vg|MOUNT|awk print $7do if grep -c $i /tmp/fs_mounted.txt -ge 1 ; then echo kill_fs_user.sh $i $SCRIPTS_PATH/kill_fs_user.sh $ifi done調(diào)用的kill_fs_user.sh代碼 :#kill_fs.sh fs_name#kill_fs.sh /oracleif df -k|grep $1|grep -v grep|awk print $7|grep -v 0-9a-zA-Z$1|grep -v $10-9a-zA-Z_-|wc -l -eq 1 ;then fuser -kcux $1fi實(shí)際使用stop_host1代碼:MACHINE=host1VGNAME=host1vgHA_LOG=log/stop_$MACHINE_appdate +%C%y%m%d%H%M.logSCRIPTS_PATH=dirname $0if $SCRIPTS_PATH = . ;then SCRIPTS_PATH=pwdficd $SCRIPTS_PATH$HA_LOG /home/scripts/comm/tail_log.sh stop_app $SCRIPTS_PATH/$HA_LOG !|stopped!|Waiting-|stopping-|successful! successful! /tmp/ha_app.out &sleep 1/home/scripts/$MACHINE/stop_$MACHINE_app ha $HA_LOG 2 &1#stop_host1/home/scripts/comm/kill_vg_user.sh $VGNAMEexit 0回頁(yè)首同步 HA 的腳本由于 HA 切換后,切換的時(shí)間有可能超過(guò)一天,而切換時(shí)很可能另一臺(tái)機(jī)器已無(wú)法開(kāi)啟,不能拿到最新的 crontab 和后臺(tái)相關(guān)腳本,所以 crontab 和腳本最好能每天自動(dòng)同步。編寫(xiě) sync_HA.sh在 host1 上編寫(xiě) sync_HA.sh的代碼:OMACHINE=host2rsh $OMACHINE cd /home/scripts;tar -cvf $OMACHINE_scripts.tar $OMACHINErcp $OMACHINE:/home/scripts/$OMACHINE_scripts.tar /home/scriptscd /home/scriptsrm -rf $OMACHINEtar -xvf $OMACHINE_scripts.tarrcp $OMACHINE:/var/spool/cron/crontabs/root /home/scripts/$OMACHINE/crontab_$OMACHINE 修改 Crontab 生效#sync crontab 0 0 * * * /home/script/sync_HA.sh /tmp/sync_HA.log 2&1同樣在 host2 上編寫(xiě),但注意 OMACHINE 修改為 host1?;仨?yè)首經(jīng)驗(yàn)共享回頁(yè)首異常情況的人工干預(yù)本文沒(méi)有詳細(xì)描述 HACMP 異常情況的處理,這是因?yàn)槊總€(gè)系統(tǒng)每次異常可能情況都不一樣,而且一般來(lái)說(shuō),安裝 HACMP 的系統(tǒng)都是核心系統(tǒng),給你留的時(shí)間會(huì)非常短,快速處理的要求更嚴(yán)格。所以,我們?cè)噲D找到一個(gè)辦法,來(lái)應(yīng)對(duì) HACMP 本身異常 99% 的異常情況,而對(duì)于腳本和系統(tǒng)參數(shù)的不匹配,只能通過(guò)找出問(wèn)題所在來(lái)處理。場(chǎng)景 1:host1 出現(xiàn)問(wèn)題,但 HACMP 沒(méi)有切換成功,處于僵死狀態(tài)1. 快速?gòu)?qiáng)制停止 host1 機(jī)器運(yùn)行host1:halt -q2. 確保應(yīng)用服務(wù)繼續(xù)在 host2 上使用手工啟動(dòng) host1_RG,smitty hacmp-System Management (C-SPOC)- HACMP Resource Group and Application Management -Bring a Resource Group Online選擇 host1_RG,host2 Bring a Resource Group OnlineType or select values in entry fields.Press Enter AFTER making all desired changes. Entry Fields Resource Group to Bring Online host1_RGNode on Which to Bring Resource Group Online host2即在 host2 上啟動(dòng) host1 的資源組。3. 檢查和確認(rèn)應(yīng)用已可以訪問(wèn)。如發(fā)現(xiàn)仍然不正常,請(qǐng)參考場(chǎng)景 2 的第 3 步。4. 檢查和修正問(wèn)題。o host2: 強(qiáng)制停止 HACMP;o 重新啟動(dòng) host1,確認(rèn)無(wú)硬件問(wèn)題;o 檢查 HACMP 的環(huán)境,閱讀 /tmp/hacmp.out 等 log,看看能否找出問(wèn)題所在;o 修正 HACMP 或其它部分o 確認(rèn)無(wú)誤申請(qǐng)短暫停機(jī)時(shí)間,重起 HACMP 回原。場(chǎng)景 2:host1 出現(xiàn)問(wèn)題,HACMP 切換過(guò)來(lái),但處于僵死狀態(tài)由于此場(chǎng)景的起因有很多,3,4 點(diǎn)只能根據(jù)具體系統(tǒng)來(lái)細(xì)化,但還是強(qiáng)烈建議每個(gè)系統(tǒng)編制一份手工切換手冊(cè),詳細(xì)列明 HACMP 不可用的情況下如何手工啟動(dòng)應(yīng)用,以備緊急情況使用。1. 停止 host1 機(jī)器運(yùn)行host1:halt -q2. host2 強(qiáng)制停止 HACMP3. 檢查和修正目前狀況HACMP 異常情況修正表序號(hào)目前狀況目前狀況修正備注1服務(wù) IP 地址無(wú)smitty tcpip 手工添加2vg 狀況未 varyonvaryonvg 手工執(zhí)行如果鎖住加 varyonvg -bu3fs 狀況未 mountmount 手工執(zhí)行如損壞,執(zhí)行 fsck -y4應(yīng)用程序狀況執(zhí)行異常強(qiáng)制停止,重起確認(rèn) 1-3 ok 再做4. 手工修正目前狀況5. 檢查和修正問(wèn)題a. 重新啟動(dòng) host1,確認(rèn)無(wú)硬件問(wèn)題;b. 檢查 HACMP 的環(huán)境,閱讀 /tmp/hacmp.out 等 log,看看能否找出問(wèn)題所在;c. 修正 HACMP 或其它部分;d. 確認(rèn)無(wú)誤申請(qǐng)短暫停機(jī)時(shí)間,重起 HACMP 回原?;仨?yè)首其它有用的經(jīng)驗(yàn)HACMP 自動(dòng)啟動(dòng)的實(shí)現(xiàn)有的系統(tǒng),希望開(kāi)機(jī)就把 HACMP 自動(dòng)啟動(dòng),也就不需要人工干預(yù)就啟動(dòng)了應(yīng)用,這需要 clstart 時(shí)指明 :host1root/smitty clstart Start Cluster Services* Start now, on system restart or both restart Start Cluster Services on these nodes host1 BROADCAST message at startup? true Startup Cluster Information Daemon? false Reacquire resources after forced down ? false這樣,HACMP 會(huì)自動(dòng)才 /etc/initab 里增加以下一行hacmp6000:2:wait:/usr/es/sbin/cluster/etc/rc.cluster -boot -b # Bring up ClusterStop Cluster Services這樣就實(shí)現(xiàn)了自動(dòng)啟動(dòng) HACMP 和應(yīng)用。如果希望取消這種設(shè)定,需要運(yùn)行 clstop:host1root/smitty clstopStop Cluster Services* Stop now, on system restart or both restart Stop Cluster Services on these nodes bgbcb04 BROADCAST cluster shutdown? true* Shutdown mode graceful可以看到 /etc/initab 里這一行消失了。HACMP 的 too long 報(bào)警廣播的修正在有些系統(tǒng)運(yùn)行很長(zhǎng)時(shí)間的情況下,有可能停止的時(shí)間會(huì)超出我們預(yù)期,如 oracle 數(shù)據(jù)庫(kù)的某些資源被交換到 Pagespace 里。缺省如果超過(guò) 180s,就會(huì)廣播報(bào)警,直至 HACMP 異常。這時(shí)你可以修正這個(gè)參數(shù),以避免廣播出現(xiàn)。smitty hacmp-Extended Configuration -Extended Event Configuration -Change/Show Time Until Warning Max. Event-only Duration (in seconds) 360 Max. Resource Group Processing Time (in seconds) 360 Total time to process a Resource Group event 12 minutes and 0 seconds before a warning is displayed NOTE: Changes made to this panel must be propagated to the other nodes by Verifying and Synchronizing the cluster同樣,修改后需要 HACMP 同步。HACMP 的 DMS 問(wèn)題的修正DMS(deadman switch) 是用來(lái)描述系統(tǒng) kernel extension 用的,它可以在系統(tǒng)崩潰前關(guān)閉系統(tǒng),并產(chǎn)生 dump 文件,以供日后檢查使用。DMS 存在的目的是為了保護(hù)共享外置硬盤(pán)及數(shù)據(jù),當(dāng)系統(tǒng)掛起時(shí)間長(zhǎng)過(guò)一定限制時(shí)間時(shí),DMS 會(huì)自動(dòng)關(guān)閉該系統(tǒng),由 HACMP 的備份節(jié)點(diǎn)接管系統(tǒng),以保護(hù)數(shù)據(jù)和業(yè)務(wù)的正常進(jìn)行,避免潛在的問(wèn)題,特別是外置磁盤(pán)陣列。errpt 確認(rèn) DMS 的發(fā)生:LABEL: KERNEL_PANICIDENTIFIER: 225E3B63Date/Time: Thu Apr 25 21:26:16 Sequence Number: 609 Machine Id: 0040613A4C00 Node Id: localhostClass: SType: TEMPResource Name: PANICDescrptionSOFTWARE PROGRAM ABNORMALLY TERMINATEDRecommended Actions PERFORM PROBLEM DETERMINATION PROCEDURES Detail DataASSERT STRING PANIC STRINGDMS 起作用的原因主要有以下幾點(diǎn): 某種應(yīng)用程序的優(yōu)先級(jí)大于 clstrmgr deamon , 導(dǎo)致 clstrmgr 無(wú)法正常重置 DMS 計(jì)數(shù)器; 在系統(tǒng)上存在大量 I/O 操作,導(dǎo)致 CPU 沒(méi)有時(shí)間相應(yīng) clstrmgr deamon; 內(nèi)存泄漏或溢出問(wèn)題; 大量的系統(tǒng)錯(cuò)誤日志活動(dòng)。換句話說(shuō),當(dāng)以上情況出現(xiàn)時(shí),HACMP 認(rèn)為系統(tǒng)崩潰,會(huì)自動(dòng)切換到另一臺(tái)節(jié)點(diǎn)機(jī)上去,這是我們想要的結(jié)果嗎?一般情況下,原有的缺省設(shè)置無(wú)需更改。但由于系統(tǒng)運(yùn)行了較長(zhǎng)時(shí)間后,負(fù)荷可突破原有設(shè)計(jì)(平均小于 45%),而且某些情況下會(huì)持續(xù) 100%,我們就不希望發(fā)生切換。如果發(fā)生了 DMS 造成的切換,我們先延長(zhǎng) HACMP 的確認(rèn)的時(shí)間,即調(diào)整心跳線的診斷頻率:smitty hacmp-Extended Topology Configuration -Configure HACMP Network Modules - Change a Network Module using Predefined Values 選擇r232* Network Module Name rs232 Description RS232 Serial Protocol Failure Detection Rate Slow NOTE: Changes made to this panel must be propagated to the other nodes by Verifying and Synchronizing the cluster同樣,記得同步 HACMP。如果還是發(fā)生 DMS 導(dǎo)致的 HACMP 切換,排除異常后,只好禁用 DMS 了,這點(diǎn) IBM 不推薦,因?yàn)橛锌赡茉斐汕袚Q時(shí)數(shù)據(jù)丟失或損壞。修改 rc.cluster 文件增加 -D 參數(shù):host1root/ vi /usr/es/sbin/cluster/etc/rc.cluster if $VERBOSE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論