| 臺灣-繁體中文 |
|
|
|
![]() |
以 ServiceGuard OPS Edition 規劃 OPS 叢集 > 第 3 章. 認識ServiceGuard OPS Edition軟體元件叢集管理員如何運作 |
|
叢集管理員可用來將叢集初始化、監視叢集是否正常、辨識節點是否已經失效、在節點加入或脫離叢集時協調重組叢集。叢集管理員以協助程式處理程序的型態,在各個節點上運作。在啟動叢集以及重組叢集期間,有一個節點會被選為叢集調度者。雖然所有節點都會執行某些叢集管理功能,不過叢集調度者才是心跳訊息的中心點。 由系統管理員設定叢集配置參數,以及初始設定叢集以後,在正常的作業情況下,叢集就可以自行調節,不再需要人為的干涉。叢集的配置參數包括叢集與節點名稱、叢集心跳的網路連線參數、叢集鎖定磁碟資訊以及計時參數(「第 4 章「規劃與記錄OPS叢集」」一章中有詳細的介紹)。叢集參數的輸入可透過SAM的使用或編輯ASCII叢集配置範本檔。您所輸入的參數可用來建立會散佈到叢集中所有節點的二進位配置檔。 也就是說,在叢集中所有節點的這一個二進位配置檔必須完全相同。 叢集管理員的運作核心就是在叢集裡的節點之間傳送及接收心跳訊息。叢集裡的每一個節點都會透過在被監視的網路或序列式(RS232)傳輸線,將心跳訊息傳給叢集調度者(若需監視區域網路的詳細資訊,請參閱「「監視LAN介面與偵測失效 」」)。 如果一個叢集節點在規定的時間內沒有收到從所有其他叢集節點來的心跳訊息,則叢集重組將會啟動。在重組結束時,如果組成叢集的是新的一組節點,這項訊息就會被傳達給套件調度者(若需詳細資訊,請參閱「「 套件管理員如何運作 」」一節。原本在已不存在於新叢集中的節點上執行的套件,會被轉移到其新配置的備用節點。請注意,如果發生暫時喪失心跳的現象,則叢集可能會用和以前一樣的相同節點重組。在這種情況下,雖然在進行重組時,應用程式的執行效能可能會稍微受到影響,不過套件不會因此而或切換。 如果同時透過同一個區域子網路傳輸心跳以及資料,資料可能會阻塞,進而導致ServiceGuard在心跳逾時的期間錯失心跳,因而開始進行重組叢集的作業;要不是因為發生資料阻塞的現象,否則不會進行這項重組作業的。為了避免這種現象,建議您要有專用的心跳,並透過一般傳輸資料的網路來配置心跳,或是透過序列式(RS232)線路來執行心跳。雖然並非一定要有專用的區域網路,不過,倘若您的網路經過分析以後,顯示可能有因為資料阻塞造成叢集漏失心跳的現象時,就值得考慮設立專用的線路。
多重心跳以平行的方式傳送。一般建議您將互連叢集節點的所有子網路設定為心跳網路,因為這樣可以防止多重錯誤而不會增加額外的成本。不過,若您使用VERITAS叢集容體管理員 (CVM),您便僅能使用單一心跳子網路。此時,心跳應被配置為備用LAN,或一群聚合埠。請參閱本章「「CVM所要求的單一心跳子網路」」一節。 每一個節點都會依照叢集設定的心跳間隔傳送心跳訊息。叢集心跳間隔是在叢集配置檔裡面設定的,您可建立這個檔案作為叢集配置的一部分。若需詳細資訊,請參閱「第 5 章「建構OPS叢集配置」」一章。 以手動啟動叢集可以將叢集配置裡面的所有節點一起組成一個叢集。通常在首次啟動叢集,進行整個叢集全面的維護或升級以後,或者是重新配置以後,才有必要手動啟動叢集。 在啟動前,叢集中的所有節點內要有相同的二進位叢集配置檔。系統管理者會在SAM中,或從一個節點發出cmruncl命令來啟動叢集。cmruncl 命令僅能在叢集尚未開始執行時用,亦即在所有節點尚未執行cmcld協助程式時。 進行啟動時,叢集管理員軟體會檢查啟動命令中所指定的所有節點是否都是叢集的有效成員、是否在運轉中、是否企圖組成一個叢集、是否可互相通訊等。如果可以,叢集管理員就會組成叢集。 舉凡重新啟動節點與加入叢集時,便會自動啟動叢集。當個別節點重新啟動後、叢集中所有節點均失效、及長時間斷電後所有SPU停止等情況時發生。 若/etc/rc.config.d/cmcluster檔案的AUTOSTART_CMCLD旗標被設定為1時,便會自動啟動叢集。當任何節點是在此參數設為1的情況下重新啟動,便會重新加入現有的叢集;若無叢集,便會嘗試組成一個新的叢集。 所謂動態重組,是在節點加入或脫離執行中的叢集時,導致叢集成員暫時發生變化產生的現象。重組與重新設定配置不同,重新設定配置表示永久改變叢集的配置檔。在下列情況下 (非完整清單),會產生叢集重組:
一般來說,重組形成的叢集會有不同的組合。新叢集所包含的節點可能比原先的叢集多或者少。 一般來說,叢集重組的運算法通常會要求叢集的規定成員數(cluster quorum)必須是先前執行的節點的絕對多數 (50%以上)。如果允許先前執行之叢集的兩個半數 (剛好 50%)重組,將會發生核心分裂(split-brain)狀況,那是因為兩個相同叢集的應用例同時執行。在核心分裂的情況下,應用程式的不同化身可能會在同時存取相同磁碟時結束。當其他化身正在修改磁碟狀態時,其中一個可能正在起始修復動作。設計ServiceGuard的規定成員數必要條件是為了防止核心分裂狀況的發生。 雖然通常需要有超過50%的叢集規定成員數,剛好50%先前執行的節點可能重組一個新的叢集,前提是其他50%之前執行的節點沒有重組。使用平局決勝(tie-breaker)可保證在二個大小相同的節點群組中做選擇時,允許其中一個群組組成叢集,強迫另一組停止。這種平局決勝的方式稱為叢集鎖定。叢集鎖定是以鎖定磁碟或是仲裁伺服器的方式來執行。 叢集鎖定是當執行中的叢集失效,而ServiceGuard企圖形成新叢集,然而此叢集可分成兩個大小相同的子叢集之情況時,被當成tie-breaker (平局決勝) 使用。每個子叢集都會試圖取得叢集鎖定。新叢集將由得到叢集鎖定的子叢集組成,這樣可以防止兩個子叢集同時執行。如果兩個子叢集的大小不相等,就會由節點高於 50% 的子叢集組成新叢集,而不必使用叢集鎖定。 若是使用雙節點的叢集,則需配置叢集鎖定。兩個節點之間若失去通訊,包含叢集鎖定的節點就會接管叢集,而另一個節點將會中止或執行TOC。在沒有叢集鎖定的情況下,只要叢集裡面有任何一個節點失效,就會導致另一個節點,進而造成叢集。此外,如果在節點企圖取得叢集鎖定時,叢集鎖定發生失效,也會造成叢集。如果您的叢集有四個以上的節點,就不允許叢集鎖定。 鎖定需求 一個節點的叢集不需叢集鎖定;而兩個節點的叢集則需要叢集鎖定。若叢集中有三個以上的節點,便強烈建議使用鎖定磁碟。不過,若叢集中的節點超過四個,則無法使用叢集鎖定磁碟,但是可使用仲裁伺服器。 叢集鎖定是容體群組中的某個磁碟的特殊區域,由叢集中的所有節點共用。當節點獲得叢集鎖定時,這個區域就會被作上記號,其他節點將會知道此區域已被鎖定。 鎖定磁碟不是專給叢集鎖定使用的;這個磁碟可作為正常容體群組的一部分,用來儲存使用者資料。叢集鎖定容體群組與實體容體名稱要在叢集配置檔中指明。 圖3-2顯示鎖定磁碟的作業。 ServiceGuard定時檢查鎖定磁碟的狀況,若鎖定磁碟沒通過檢查,ServiceGuard便會將訊息寫入syslog檔內。監視這個檔才能提早偵測鎖定磁碟問題。 您可根據所建構的高可靠性配置種類,在兩個鎖定磁碟選項中作選擇:單或雙鎖定磁碟。如果可以,建議使用單鎖定磁碟。不過,不論是採用單一鎖定還是雙重鎖定,即使有一個節點的電路斷了,叢集鎖定都必須可以使用,因此,叢集鎖定的配置有一部份要由可以使用的電源線路決定。不論您的選擇為何,叢集中的所有節點都必須能夠存取叢集鎖定,以維持高可用性。 建議您採用單一叢集鎖定的方式。採用單一叢集鎖定時,叢集鎖定的電源線路必須跟叢集中的任何節點分離。例如,雙節點叢集最好是採用三個電源電路,以獨立供電的一個磁碟作為叢集鎖定。在雙節點叢集上,這個單鎖磁碟不能跟任何一個節點共享一個電源電路,而且必須是外接式磁碟。如果是有三個或四個節點的叢集,磁碟就不應該跟 50% 或者 50% 以上的節點共享電源電路。 如果您使用的磁碟是跟叢集節點安裝在同一個機箱裡,則在這類型的叢集中,單鎖磁碟就可能會成為單點失效,因為萬一節點失去電源,在同一個機箱裡的叢集鎖定也無法使用。相同地,在校區(campus)叢集裡,如果叢集所含的節點在兩個分開的資料中心執行,單一鎖定磁碟可能會造成單點失效,而其所在的資料中心則會遭受嚴重的失效。只有在這兩種情況下,才應該使用有兩個分別供電的叢集磁碟的雙重叢集鎖定,以免叢集鎖定磁碟成為失效點。如果使用雙重叢集鎖定,磁碟不能彼此共享電源或節點基座。這樣萬一停電影響到某個節點和磁碟時,其他節點和磁碟仍然可以使用,所有叢集的重組可以在其餘節點上進行。對於校區叢集來說,每一個資料中心都應該要有一個鎖定磁碟,而且所有的節點必須能存取雙方的鎖定磁碟。萬一其中一個資料中心發生故障,剩餘資料中心的節點就能取得本機的鎖定磁碟,以順利重組新叢集。
仲裁伺服器可在任何大小的叢集中使用,它的程序是在叢集以外的一個提供仲裁服務的機器上進行。仲裁伺服器聆聽一個來自已知連接埠上的ServiceGuard節點的連線要求。伺服器在記憶體內為每一個叢集保有一個特定的區域,當某個節點取得叢集鎖定時,即標示該區域,其餘的節點便得知鎖定「已被取」。兩個相同大小的節點群組之間若斷訊,取得仲裁伺服器鎖定的群組便掌控叢集,其餘的節點則執行 TOC。若無叢集鎖定,則其中一個節點群組的失效會造成另一個群組,進而叢集的中止。亦請注意,當試圖存取仲裁伺服器時卻無法使用它時,叢集便會中止。 仲裁伺服器的作業情況如圖 3-3 「仲裁伺服器作業情況」所示。當節點1與節點2之間的通訊斷訊時,仲裁伺服器便會選擇 一個節點 (範例中是選節點2) 以便繼續在叢集中執行。另一個節點則會中止。 仲裁伺服器在一單獨的系統上執行,且能提供多個叢集的仲裁服務。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||