回到網頁內容 臺灣-繁體中文
HP.com 首頁 產品資訊 支�#169;及驅動程式 解決方案 如何購買
» 聯絡 HP
進階選項
HP.com 首頁
管理 Serviceguard第十四版 > 第 3 章. 認識 Serviceguard 軟體元件

叢集管理員如何運作

» 

技術文件

PDF 格式的完整書籍
» 相關文件
» 回饋意見
內容©韟像B開©l

 » 目錄

 » 索引

叢集管理員可初始化叢集、監視叢集的狀態、判斷節點是否失效,並在節點加入或離開叢集時,規範叢集的重組。叢集管理員在每個節點上作為協助程式處理程序運作。在叢集啟動和重組活動期間,會選擇一個節點充當叢集調度者 (cluster coordinator)。雖然所有節點都會執行某些叢集管理功能,然而叢集調度者是節點內通訊的中心點。

叢集的配置

系統管理員會設定叢集配置參數,初始啟動叢集;之後,此叢集會在正常運作狀態下自行規範,無需手動介入。叢集的配置參數包括叢集名稱和節點、叢集心跳網路參數、叢集鎖定資訊和定時參數 (於第 4 章「規劃與記錄 HA 叢集 」一章探討)。您可以利用 Serviceguard 管理員輸入,或是編輯叢集 ASCII 配置檔來設定叢集參數 (請參閱第 5 章「建構 HA 叢集配置」)。您輸入的參數會用來建立二進位配置檔,傳遞於叢集中的所有節點 。叢集中所有節點上的這個二進位叢集配置檔必須相同。

心跳訊息

叢集管理員運作的核心部份是在叢集的節點中傳送和接收心跳訊息。叢集中的每個節點利用叢集調度者,在每個配置為心跳裝置之監視的 TCP/IP 網路中互相交換心跳訊息 (區域網路的監視功能會在稍後的「監視區域網路介面與偵測失效 」一節中進一步說明)。

如果在規定的時間內,叢集節點未收到所有其他叢集節點傳來的心跳訊息,則此叢集會開始重組。重組結束時,如果一組新節點組成叢集,則該訊息會傳給套件調度者 (本章「套件管理員如何運作」中將進一步說明)。在節點上執行的故障轉移套件不再屬於新的叢集,且套件會轉移到其承接節點上。請注意,如果有短暫的心跳損失,則叢集可能會以先前的節點重組。在這種情形下,套件不會中止或切換,儘管應用程式的效能可能在重組時受到輕微的影響。

如果心跳和資料透過相同的區域子網路傳送,則資料壅塞可能會使 Serviceguard 在心跳逾時期間錯失心跳,並開始進行不必要 (若資料不壅塞便不會發生) 的叢集重組。要避免這種情況發生,HP 建議您擁有一個專屬的心跳區域網路,並在資料網路上配置心跳。

重要: 若配置多重心跳,則心跳會以平行的方式傳送。HP 會建議您將所有互連叢集節點的子網路配置為心跳網路,在不需額外花費的情況下免於各種故障情形。

心跳的 IP 位址必須在與各節點相同的子網路上。若需心跳需求的相關資訊,請參閱 HEARTBEAT_IP (在從「叢集配置參數 」開始的「叢集配置參數 」下之項目)。

若使用 Veritas 叢集容體管理員 (CVM) 3.5 版 (在可支援的系統上),便僅能使用單一心跳子網路。此時心跳應在每一個節點上與備用區域網路一起配置,或配置為聚合埠 (aggregated port) 的群組。請參閱「需要備援心跳子網路」

附註: 您無法再在序列 (RS232) 線或是 FDDI 或 Token Ring 網路上執行心跳。

各個節點會按照叢集心跳間隔所指定的速率來傳送心跳訊息。叢集心跳間隔設定於叢集配置檔中,是叢集配置的一部分,若需完整說明,請參閱第 5 章「建構 HA 叢集配置」

手動啟動整個叢集

手動啟動會以叢集配置中的所有節點組成一個叢集。通常是在全叢集維護或昇級後,或在重新配置後,第一次啟動叢集時進行手動啟動。

啟動之前,叢集中的所有節點都必須有相同的二進位叢集配置檔。系統管理員會在 Serviceguard 管理員中啟動叢集,或者從某個節點發出 cmruncl 命令啟動叢集。只能在叢集未執行,也就是沒有節點執行 cmcld 協助程式時,才能使用 cmruncl 命令。

啟動時,叢集管理員軟體會檢查啟動命令中所指定的所有節點是否都是叢集的合法成員、已啟動並執行中、試圖組成叢集,且可互相通訊。若達到上述條件,則叢集管理員會組成叢集。

叢集自動啟動

節點重新啟動並加入叢集時,叢集會自動啟動。個別節點重新啟動之後,或是叢集中的所有節點都失效時 (通常是發生在長時間斷電,且所有 SPU 都關閉時),叢集會自動啟動。

如果 /etc/rc.config.d/cmcluster 檔中的旗標 AUTOSTART_CMCLD 設為 1,叢集便會自動啟動。此參數設為 1 的任何節點重新啟動時,會重新加入一個已存在的叢集,如果沒有已存在的叢集,則會試圖組成新的叢集。

動態叢集重組

動態重組是叢集成員的暫時性變化,發生於節點加入或離開執行中的叢集時。重組不同於重新配置,重新配置是永久改變配置檔。叢集重組發生於下列情況 (非完整清單):

  • 啟用節點上偵測到 SPU 或網路失效。

  • 停用的節點想要加入叢集,而叢集管理員協助程式已經在該節點上啟動。

  • 叢集配置新增或移除節點。

  • 系統管理員中止某個節點。

  • 節點因為套件失效而中止。

  • 節點因為服務失效而中止。

  • 網路流量太大,使得叢集無法接收心跳訊息。

  • 心跳網路失效,而且未配置別的網路傳送心跳。

通常,叢集重組結果都會有不同的組合。新的叢集包含的節點不一定比先前的叢集多或少。

防止核心分離的叢集仲裁

一般來說,叢集重組的運算法通常要求叢集仲裁 (cluster quorum) 是先前執行節點的絕對多數 (即大於 50%)。如果先前執行叢集的半數 (剛好 50%) 皆允許重組,就會發生核心分離 (split-brain) 的情形,即相同叢集的兩個應用例都在執行。核心分離的情形下,不同的應用程式形態會在同時存取相同的磁碟時結束。其中之一的形態可能會在另一個形態修改磁碟狀態時開始回復動作。Serviceguard 的仲裁需求旨在於防止發生核心分離的情況。

叢集鎖定

雖然通常需要超過 50% 的叢集仲裁,剛好 50% 先前執行的節點仍可能會重組一個新的叢集,前提是其他 50% 先前執行的節點未重組。使用平局決勝服務 (tie-breaker) 可確保在二個大小相同的節點群組中做選擇時,允許其中一個群組組成叢集,並強迫另一組關閉。這種平局決勝服務的方式稱為叢集鎖定。叢集鎖定是以鎖定磁碟鎖定 LUN,或仲裁伺服器的方式來執行。

僅當執行中的叢集失效,而 Serviceguard 企圖組成新叢集時,此叢集分成兩個大小相同的子叢集,此時叢集鎖定會作為平局決勝服務使用。每個子叢集都會試圖取得叢集鎖定。新叢集將由得到叢集鎖定的子叢集組成,這樣可以避免兩個子叢集同時執行。如果兩個子叢集的大小不相等,就會由節點高於 50% 的子叢集組成新叢集,而不必使用叢集鎖定。

如果您有雙節點叢集,您會被要求配置一個叢集鎖定。萬一這兩個節點之間失去通訊,擁有叢集鎖定的節點就會接管叢集,另一個節點則會中止 (系統重設)。如果沒有叢集鎖定,只要叢集中的任何一個節點失效,就會使得另一個節點中止,叢集也會因此而中止。此外要注意的是,如果叢集鎖定在取得過程中失效,叢集也會中止。

鎖定需求

單節點叢集不需要叢集鎖定,雙節點叢集則需要叢集鎖定,在三個節點以上的叢集內,極力建議要有叢集鎖定。若叢集中的節點超過四個,請使用仲裁伺服器;這種大小的叢集不允許使用叢集鎖定磁碟。

鎖定 LUN 或 LVM 鎖定磁碟用作叢集鎖定

鎖定磁碟或鎖定 LUN 可用於包含最多四個節點的叢集。

叢集鎖定磁碟是容體群組中,位於 LVM 磁碟上的特殊區域,由叢集中的所有節點共用。同樣地,叢集鎖定 LUN 是一個包含鎖定資訊的小型專用 LUN,連接至叢集內的所有節點。

在 LVM 配置中,用作鎖定磁碟的磁碟不是專門作為叢集鎖定使用;這個磁碟可作為正常容體群組的一部分,用來儲存使用者資料。而一個鎖定 LUN 是專門作為叢集鎖定使用,您不能在其內儲存任何其他的資料。

您在叢集配置檔中指定叢集鎖定容體群組和實體容體 (或叢集鎖定 LUN)。

當節點取得叢集鎖定時,這個區域就會被作上記號,讓其他節點會知道此區域已「鎖定」。

鎖定磁碟或鎖定 LUN 的作業如圖 3-2 「鎖定磁碟或鎖定 LUN 作業」 所示。

圖 3-2 鎖定磁碟或鎖定 LUN 作業

鎖定磁碟或鎖定 LUN 作業

Serviceguard 會定期檢查鎖定磁碟或 LUN 的狀況,若鎖定磁碟未通過檢查,Serviceguard 會將訊息寫入 syslog 檔內。監視這個檔才能提早偵測鎖定磁碟的問題。

若是使用鎖定磁碟,便可根據所建構的高可用性配置種類,選擇單鎖定磁碟或雙鎖定磁碟。如果可以,建議使用單鎖定磁碟。不過,不論是採用單鎖定還是雙鎖定,即使有一個節點的電路失效,叢集鎖定都必須可以使用,因此,叢集鎖定的配置有一部份要視可使用的電路數目決定。不論您的選擇為何,叢集中的所有節點都必須能夠存取叢集鎖定,以維持高可用性。

重要: 雙鎖定無法在 LUN 上施行。意即,不能在長距離叢集中使用鎖定 LUN 機制。

單鎖定磁碟或 LUN

單鎖定磁碟或鎖定 LUN 配置的電路應與叢集中任何節點的電路分開。例如,雙節點叢集最好採用三個電路,以單一、獨立供電的單一磁碟或 LUN 作為叢集鎖定。在雙節點叢集上,這個單鎖定裝置不能跟其他節點共用電路,而且鎖定磁碟必須是外接式磁碟。如果是有三個或四個節點的叢集,磁碟就不應該跟 50% 以上的節點共用電路。

雙鎖定磁碟

如果您使用的磁碟跟叢集節點安裝在同一個機箱內,叢集中的單鎖定磁碟便會成為單點失效,因為在同一機箱裡擁有鎖定磁碟節點的電源喪失,將會使叢集鎖定無法作用。相同地,在校區 (campus) 叢集中,叢集包含在兩個分開的資料中心執行的節點,若單鎖定磁碟的資料中心毀損,則單鎖定磁碟會成為單點失效。

只有在這兩種情況下,才應該使用有兩個分別供電之叢集磁碟的雙叢集鎖定,以免叢集鎖定磁碟成為單點失效。

附註: 您必須使用雙叢集鎖定的光纖通道連接;無法再在平行 SCSI 配置中施行它。

如果使用雙叢集鎖定,磁碟不能彼此共用電路或節點基座。這樣萬一停電影響到某個節點和磁碟時,其他節點和磁碟仍然可以使用,所有叢集的重組可以在其餘節點上進行。對於校區叢集,在每個資料中心裡應該要有一個鎖定磁碟,而且所有節點必須可以存取兩個鎖定磁碟。如果其中一個資料中心失效,在剩下的資料中心裡的節點將可取得它們本機的鎖定磁碟,以成功地重組一個新的叢集。

附註: 雙鎖定磁碟不提供備援叢集鎖定。事實上,雙鎖定是複合鎖定,表示叢集組成時必須有兩個可用磁碟,而不像單鎖定磁碟只需要一個。因此,雙叢集鎖定唯一建議的使用方法是在單一叢集鎖定無法在剛好一半的叢集節點失效時分離使用。

如果雙鎖定磁碟的其中之一失效,則 Serviceguard 在執行定期檢查時,會偵測到這個狀況,然後將訊息寫入 syslog 檔。失去其中一個鎖定磁碟後,若剩餘的節點無法存取殘存的叢集鎖定磁碟,則叢集節點失效會導致叢集關閉。

使用仲裁伺服器作為叢集鎖定

仲裁伺服器可在任何大小的叢集中使用,仲裁伺服器的處理程序會在其提供仲裁服務之叢集外的機器上執行。它會傾聽已知連接埠之 Serviceguard 節點所提出的連線要求。仲裁伺服器替每個叢集維護特定的記憶體區域,當節點取得叢集鎖定時,該區域會標示出來,其他節點會視該鎖定「已使用」。若兩個同等大小的節點群組之間失去通訊,擁有仲裁伺服器鎖定的節點就會接管叢集,另一個節點則會執行系統重設。如果沒有叢集鎖定,只要節點中的任何一個群組失效,就會使得另一個群組中止,叢集也會因此而中止。亦請注意,當試圖存取仲裁伺服器時,若仲裁伺服器無法使用,叢集便會中止。

仲裁伺服器的作業如圖 3-3 「仲裁伺服器的作業」 所示。當節點 1 與節點 2 之間的通訊中斷時,仲裁伺服器會選擇一個節點 (範例中為節點 2) 以便繼續在叢集中執行,另一個節點則會中止。

圖 3-3 仲裁伺服器的作業

仲裁伺服器的作業

仲裁伺服器在分開的系統上執行,且能提供多個叢集的仲裁服務。

無叢集鎖定

通常,配置三個以下節點的叢集時不能沒有叢集鎖定。雙節點叢集必須要有叢集鎖定,而三個以上節點的配置就可考慮不採用叢集鎖定,不過,還是要考慮叢集是否需要平局決勝服務。例如,如果有三個節點的叢集中,其中一個節點已移除進行維護工作,叢集就會重組成雙節點叢集。萬一因為節點或通訊失效而發生平局決勝的情形,整個叢集就會無法使用。

有四個以上節點的叢集不需要叢集鎖定,因為叢集分成相等兩半的機會很小。不過,配置您的叢集時請考量避免同時正好有一半節點失效。例如,確認沒有潛在的單點失效,例如相同數目節點之間只有單一的區域網路,或者不要將半數節點擺在單一的電路上。

可列印版本
隱私權聲明 使用範圍與著作權聲明
© Hewlett-Packard Development Company, L.P.