| 臺灣-繁體中文 |
|
|
|
![]() |
以 ServiceGuard OPS Edition 規劃 OPS 叢集 > 第 3 章. 認識ServiceGuard OPS Edition軟體元件套件控制命令集運作方式 |
|
套件是ServiceGuard啟動和中止已配置的應用程式之方法。在ServiceGuard中,套件亦是故障轉移行為的單元。套件是由ServiceGuard管理的服務、磁碟容體和IP位址的集合,來確定它們的可用性。每個叢集最多可以有60個套件,且每個叢集可以有900個服務。 若套件目前沒有在執行,便會啟動,套件管理員檢測到它已在叢集的某適當的節點上啟動。如果套件在數個節點上啟動,則套件管理員會使用故障轉移規則來決定由何處啟動套件。請注意,您不需使用cmrunpkg命令。在許多狀況下,最好的啟動套件方式是用cmmodpkg命令使套件在一個或多個節點上啟動。 套件管理員會一直試著繼續執行套件,除非有某種因素阻止套件在任何節點上執行。套件無法執行的最普遍原因是AUTO_RUN未啟動,或特殊節點上的套件未啟動NODE_SWITCHING。當套件在一個節點上失效,然後在另一個節點上啟動時,套件將會在新的位置上自動啟動。這樣的程序就是所謂的套件切換,也就是遠端切換。 當您建立套件時,您要指定套件可以執行的節點清單。標準套件一次只能在一個節點上執行,然後在節點清單中的下一個可用節點上執行。套件能在叢集啟動時自動啟動,如果AUTO_RUN 參數設定為YES。相反地,AUTO_RUN 設定為 NO 的套件在叢集啟動時將不會自動啟動,您必須使用 cmmodpkg 命令明確地使這種套件啟動。
套件如何啟動,以及其在執行時的行為為何?圖 3-13 「顯示重要事件的套件時序線」中顯示套件生命週期的許多階段中的其中幾個。 下列為套件生命週期中最重要的時刻:
首先,選取一個節點。這個節點必須是在套件的節點清單中,它必須符合套件故障轉移規則,而且在選定節點上必須具有套件所需的任何資源。其中一個資源是監視套件的子網路。如果子網路無法使用,則套件不能在這個節點上啟動。另一種型態的資源與監視的外部資源有依存關係。如果監視過程顯示的配置資源的值超出許可範園,則套件無法啟動。 一旦選定節點,便會檢查套件確實能在節點上啟動。然後在選定節點上,由控制命令集為套件啟動服務。嚴格來說,選定節點上的run命令集通常被用來啟動套件。 一旦套件管理員決定套件能在特定的節點上啟動後,它便啟動run命令集(亦即,用start參數執行控制命令集)。該命令集執行下列的步驟(如圖 3-14 「執行run命令集的套件時序線」所示):
在任何相關步驟中,錯誤會導致命令集不正常結束 (傳回結束碼1)。例如,套件服務如果無法啟動,則控制命令集將會以錯誤結束。 而且,如果run命令集執行在RUN_SCRIPT_TIMEOUT指定的時間內沒有完成,則套件管理員會將這命令集殺掉。在run命令集執行期間,訊息會被寫入一個和run命令集同一目錄下的日誌檔中。這個日誌檔和run命令集有相同檔名,副檔名為.log。正常的啟動會記錄在日誌檔中,而錯誤訊息或啟動套件時的警告也記錄在其中。
run命令集結束後的結束碼決定套件的下個動作。正常的結束表示套件啟動成功,而其他結束表示啟動作業沒有順利完成。
在套件控制命令集中,cmrunserv命令啟動個別的服務。檔案中編寫的每項服務都會執行這個命令一次。每項服務都有一個重新啟動的計數。cmrunserv命令將這個數字傳給套件管理員,如果此項服務失效的話,就會以適當的次數重新啟動此項服務。下面是一些典型的設定: SERVICE_RESTART[0]=" " ; 不重新啟動 SERVICE_RESTART[0]="-r <n>" ; 重新啟動<n>�/para> SERVICE_RESTART[0]="-R" ; 一直重新啟動
在正常的叢集服務運作期間,套件管理員將持續監視以下各項:
有些失效會導致本機切換。例如,在特定的LAN卡上若發生故障,而該子網路有已配置的備用LAN,那麼「網路管理員」就會切換到正常的LAN卡。如果有某項服務失效,但此項服務的RESTART參數設成大於0的值,則此項服務就會重新啟動而不會停止這個套件,一直到所配置的重新啟動次數為止。 若有相依的已配置EMS資源,和會導致事件發生的觸發源,套件便會中止。 在正常運作期間,當所有服務在執行時,您可以在cmviewcl命令輸出的Script Parameters這一段查閱服務的狀態。 當有錯誤時,會發生什麼事?如果服務失效且不能重新啟動,或子網路失效且沒有備用,或配置的資源失效時,則套件將會在它目前的節點中止,而且會根據套件切換旗標的設定而在另一個節點重新啟動。 套件中止通常表示套件halt命令集有在執行(請參閱下一節的說明)。然而,失效服務的SERVICE_FAILFAST_ENABLED若設為「YES」,那麼節點將會在偵測到故障時馬上停止。如果這個旗標沒有設定,遺失的服務將會導致套件因執行halt命令集而慢慢地中止。 如果AUTO_RUN設定為YES,套件將會在另一個適當的節點啟動,如果此節點符合啟動的所有需求的話。如果AUTO_RUN設定為NO,那麼套件只會中止,不會在其他地方啟動。
ServiceGuard cmhaltpkg 命令能執行套件halt命令集,此命令會中止特定套件服務的執行。如此一來,套件便會慢慢地停止,之後即停用所有節點上套件的切換。
cmmodpkg命令無法用來中止套件,但是它會取消特定節點或所有節點上的切換功能。當切換功能被停用時,套件能繼續執行,但如果它在目前的節點上停止執行的話,將不能在其他節點上啟動。 一旦套件管理員偵測到服務失效,或是當特定的套件已下達cmhaltpkg命令,便會開始執行halt命令集(亦即,以halt參數執行的控制命令集)。這個命令集執行下列的步驟(如圖 3-15 「halt命令集執行的套件時序線」所示):
在任何相關步驟中,錯誤會導致命令集不正常結束(傳回結束碼1)。而且如果在HALT_SCRIPT_TIMEOUT指定的時間內halt命令集沒有完成,套件管理員將會殺掉這個命令集。在執行halt命令集期間,訊息會寫入與halt命令集相同目錄下的日誌檔。這個日誌檔有著和halt命令集相同的檔名和.log附檔名。正常的啟動以及與中止套件時相關的錯誤訊息或警告,會被記錄在日誌檔中。 套件轉移到其他節點的能力,會受到離開halt命令集時結束狀況的影響。下面列出可能的結束碼:
表3-4顯示錯誤狀況的可能組合、Failfast 設定和故障轉移套件的移動。 表 3-4 錯誤狀況和套件移動
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||