Sun Cluster 簡介 (適用於 Solaris 作業系統)

第 2章 Sun Cluster 的主要概念

本章說明與 Sun Cluster 系統的硬體和軟體元件相關的主要概念,這些是使用 Sun Cluster 系統之前需要理解的。

本章包含下列小節:

叢集節點

叢集節點是執行 Solaris 軟體與 Sun Cluster 軟體的機器。 Sun Cluster 軟體可讓您在一個叢集中有兩個到八個節點。

叢集節點通常連結至一個或多個磁碟。 未連結至磁碟的節點使用叢集檔案系統來存取多重主機磁碟。 並列資料庫配置中的節點共用對一些或所有磁碟的並行存取。

當另一個節點加入或離開叢集時,叢集中的每個節點都會知道。 此外,叢集中的每個節點也都知道正在本機執行的資源,以及在其他叢集節點上執行的資源。

相同叢集中的節點必須有類似的處理程序、記憶體和 I/O 能力,以便啟動故障轉移,而不至於大幅降低效能。 由於可能發生故障轉移,因此每個節點都應有足夠的能力在某個節點發生故障時滿足服務層級協定的需要。

叢集互連

叢集互連是裝置的實體配置,這些裝置用於在叢集節點之間傳輸叢集私有通訊和資料服務通訊。

冗餘互連可在系統管理員隔離故障和修復通訊時,使作業經由其餘正常運作的互連繼續。 Sun Cluster 軟體可偵測、修復並自動重新啟動經由已修復互連的通訊。

如需更多資訊,請參閱叢集互連

叢集成員關係

叢集成員關係監視器 (CMM) 是一組分散式代理程式,透過叢集互連交換訊息,以完成以下作業:

CMM 的主要功能是建立叢集成員關係,這需要在隨時加入叢集的節點之間達成叢集範圍內的協議。 CMM 將偵測每個節點上的主要叢集狀態變更,例如一個或多個節點間通訊中斷。 CMM 依賴傳輸核心模組產生傳輸到叢集中其他節點的傳輸媒體所需的心跳訊號。 當 CMM 在定義的逾時期間內未偵測到來自某個節點的心跳訊號時,則 CMM 將認為該節點已失敗,並且將啟動叢集重新配置以重新協商叢集成員關係。

為確定叢集成員關係並確保資料完整性,CMM 將執行以下作業:

請參閱資料完整性,以取得有關叢集如何保護自己以免於分割成多個獨立叢集的更多資訊。

叢集配置儲存庫

叢集配置儲存庫 (CCR) 是一個私有、叢集範圍的分散式資料庫,用來儲存專屬於叢集配置與狀態的資訊。 為避免毀壞配置資料,每個節點均必須知道叢集資源的目前狀態。 CCR 可確保所有節點均具有一致的叢集檢視。 在發生錯誤或恢復情況或叢集的一般狀態變更時,CCR 將被更新。

CCR 結構包含以下類型的資訊:

故障監視器

Sun Cluster 系統透過監視應用程式本身、檔案系統以及網路介面,使使用者和資料間「路徑」上的所有元件具有高度可用性。

Sun Cluster 軟體可迅速偵測到節點故障,並為故障節點上的資源建立等效伺服器。 Sun Cluster 軟體可確保未受故障節點影響的資源在恢復期間持續可用,並確保故障節點的資源一經恢復立即可用。

資料服務監視

每個 Sun Cluster 資料服務均提供一個故障監視器,可定期探測資料服務以確定其運作狀態。 故障監視器可驗證應用程式常駐程式是否正在執行以及用戶端是否正在被服務。 根據探測傳回的資訊,可以啟動預先定義的動作,例如重新啟動常駐程式或進行故障轉移。

磁碟路徑監視

Sun Cluster 軟體支援磁碟路徑監視 (DPM)。 DPM 透過報告輔助磁碟路徑的故障來改善故障轉移和切換保護轉移的整體可靠性。 您可以使用以下兩種方法之一監視磁碟路徑。 第一種方法由 scdpm 指令提供。 該指令可使您監視、取消監視或顯示叢集內磁碟路徑的狀態。 請參閱 scdpm( 1M) 線上援助頁,以取得有關指令行選項的詳細資訊。

監視叢集內磁碟路徑的第二種方法由 SunPlex Manager 圖形化使用者介面 (GUI) 提供。 SunPlex Manager 提供受監視磁碟路徑的拓撲檢視。 此檢視每 10 分鐘更新一次,以提供關於失敗偵測的數目。

IP 多重路徑監視

每一個叢集節點均擁有自己的 IP 網路多重路徑連結配置,該配置可能與其他叢集節點上的此種配置不同。 IP 網路多重路徑連結監視以下網路通訊故障:

法定裝置

法定裝置是由兩個或多個節點共用的磁碟,這些節點所投票數用於建立執行叢集的法定數目。 只有具有可用的法定票數, 叢集方能運作。 法定裝置的使用時機,是在叢集劃分為個別的節點集,以便建立由哪一個節點集投票給新的叢集時。

叢集節點與法定裝置會投票以形成法定數目。 依預設,當叢集節點啟動和成為叢集成員時,叢集節點會獲得一票的法定票數。 當安裝節點或管理員將節點置於維護狀態時,節點可能會有零票。

法定裝置根據節點與裝置的連線數來獲得法定票數。 當設定法定裝置時,它會獲得最大票數 N-1,其中,N 是由與法定裝置連線確定的票數。 例如,與兩個有非零票數節點連線的法定裝置,擁有一票法定票數 (二減一)。

資料完整性

Sun Cluster 系統嘗試防止資料毀壞並確保資料完整性。 由於叢集節點共用資料與資源,叢集嚴禁分割為同時處於作用中的獨立分割區。 CMM 保證任何時候均只有一個叢集可以作業。

叢集分割區可能會導致兩種問題: Split Brain 與 Amnesia。 Split Brain 發生於節點間的叢集互連遺失以及叢集分割為子叢集時,每個子叢集均相信自己是唯一的分割區。 不知道有其他子叢集的子叢集可能導致共用資源衝突,例如網路位址重複和資料毀壞。

如果所有節點都認為叢集處於不穩定的狀態,就會發生 Amnesia。 例如,有一個具有節點 A 和節點 B 的雙節點叢集。如果節點 A 失敗,將僅在節點 B 上更新 CCR 中的配置資料,而不在節點 A 上更新。如果稍後節點 B 失敗並且節點 A 重新啟動,則節點 A 將使用舊的 CCR 內容執行。 這種狀態稱為 Amnesia,並可能導致使用舊的配置資訊執行叢集。

藉由投每個節點一票,並強制給予作業中的叢集多數票,便得以避免 Split Brain 與 Amnesia 的狀況發生。 具有多數票的分割區有法定數目,並可以作業。 如果叢集中有兩個以上的節點,則這種多數票機制會運作得極好。 在兩個節點的叢集中,票數為兩票。 如果這樣的叢集被分割,外部投票可以使分割區取得法定數目。 此外部投票由法定裝置提供。 法定裝置可以是兩個節點間共用的任何磁碟。

表 2–1 說明 Sun Cluster 軟體如何使用法定數目避免 Split Brain 與 Amnesia 的狀況發生。

表 2–1 叢集法定數目以及 Split-Brain 與 Amnesia 問題

分割區類型 

法定數目解決方案 

Split Brain 

只允許具有多數票的分割區 (子叢集) 作為叢集來執行 (僅可存在一個這樣具有多數票的分割區)。 某個節點在法定數目的競爭中失敗後便會當機。  

Amnesia  

保證在啟動叢集時,該叢集至少有一個節點是最新叢集成員關係中的成員之一 (因此具有最新的配置資料)。  

故障隔離

叢集的主要問題是導致叢集被分割的故障 (稱為 Split Brain)。 發生此情形時,不是所有的節點均可通訊,所以個別節點或節點子集可能會嘗試形成個別或子集叢集。 每個子集或分割區可能「相信」自己擁有對多重主機磁碟的唯一存取權和所有權。 多個節點嘗試寫入磁碟可能導致毀壞資料。

故障隔離藉由防止存取磁碟,來限制節點存取多重主機磁碟。 當節點離開叢集 (叢集失敗或被分割) 時,故障隔離可確保節點無法再存取磁碟。 僅目前的成員可以存取磁碟,因此確保了資料完整性。

Sun Cluster 系統使用 SCSI 磁碟保留來實現故障隔離。 使用 SCSI 保留,便可以將故障節點與多重主機磁碟相「隔離」,防止它們存取這些磁碟。

當叢集成員偵測到另一個節點已經不再經由叢集互連進行通訊,即會啟動故障隔離程序來防止故障節點存取共用磁碟。 發生故障隔離時,隔離的節點便會當機,並且其主控台上會顯示「保留衝突」訊息。

用於故障隔離的 Failfast 機制

Failfast 機制會使故障節點當機,但它不阻止故障節點重新啟動。 發生當機之後,該節點可能會重新啟動並嘗試重新加入叢集。

如果節點在叢集中失去與其他節點的連接,並且也不是可達法定容量的分割區,它會被其他節點強制從叢集中移除。 另一可達法定容量之分割區部分的節點,將共用磁碟保留。 作為 Failfast 機制的結果,無法定容量的節點將當機。

Devices

全域檔案系統使整個叢集中所有檔案對於所有節點來說均是可存取與可視的。 與此類似,Sun Cluster 軟體使叢集上的所有裝置在整個叢集中可存取與可視。 即 I/O 子系統允許從任何節點存取叢集中的任何裝置,而不管裝置實體連結位置。 該存取是指全域裝置存取。

全域裝置

Sun Cluster 系統使用全域裝置來提供從任何節點對叢集中任何裝置的叢集範圍、具有高度可用性的存取。 通常,如果節點在提供對全域裝置的存取時失敗,Sun Cluster 軟體會切換至該裝置的其他路徑,並將存取重新導向至該路徑。 針對全域裝置,重新導向很簡單,因為對裝置使用了同一名稱,而不管路徑為何。 對遠端裝置的存取與對使用同一名稱的本機裝置的存取方法相同。 此外,存取叢集上全域裝置的 API 與用於存取本機裝置的 API 相同。

Sun Cluster 全域裝置包含磁碟、CD-ROM 與磁帶。 但是,磁碟是唯一受支援的多埠式全域裝置。 該有限支援表示 CD-ROM 和磁帶裝置目前不是高可用性裝置。 每部伺服器上的本機磁碟亦不是多埠式,因此不是高可用性裝置。

叢集可以為叢集中的每個磁碟、CD-ROM 和磁帶裝置指定唯一的 ID。 這種指定可讓叢集中的任何節點對各個裝置進行一致存取。

裝置 ID

Sun Cluster 軟體藉由稱為裝置 ID (DID) 驅動程式的建構來管理全域裝置。 此驅動程式用於將唯一的 ID 自動指定給叢集中的每個裝置,包括多重主機磁碟、磁帶機和 CD-ROM。

DID 驅動程式是叢集中全域裝置存取功能的主要部分。 DID 驅動程式將探測叢集的所有節點,並建立唯一磁碟裝置清單。 DID 驅動程式還將為每個裝置指定唯一的主要和次要編號,該編號在叢集的所有節點上一致。 全域裝置的存取透過由 DID 驅動程式指定的唯一 DID 來執行,而不是透過傳統的 Solaris DID 來執行。

這種方法可確保存取磁碟的任何應用程式 (例如 Solaris Volume Manager 或 Sun Java System Directory Server) 在叢集中使用一致的路徑。 這種一致性對於多重主機磁碟尤其重要,因為每個裝置的本機主要和次要編號會隨著節點的不同而改變。 這些編號也可以變更 Solaris 裝置命名慣例。

本機裝置

Sun Cluster 還可管理本機裝置。 僅可於正在執行服務並與叢集有實體連線的節點上存取這些裝置。 本機裝置的效能高於全域裝置,因為本機裝置無須在多個節點上同時複製狀態資訊。 除非裝置可由多個節點共用,否則裝置的網域故障將取消對裝置的存取。

磁碟裝置群組

磁碟裝置群組使容體管理程式磁碟群組變為「全域」,因為它為基礎磁碟提供多重路徑和多重主機支援。 實體連接到多重主機磁碟的每一個叢集節點,均提供了一個磁碟裝置群組的路徑。

在 Sun Cluster 系統中,多重主機磁碟可藉由註冊為磁碟裝置群組受控於 Sun Cluster 軟體。 這種註冊為 Sun Cluster 系統提供有關各個節點具有到達哪些容體管理程式磁碟群組的路徑之資訊。 Sun Cluster 軟體可為叢集中的每一個磁碟與磁帶裝置建立原始磁碟裝置群組。 這些叢集裝置群組保持離線狀態,直至您透過挂載全域檔案系統或存取原始資料庫檔案將它們作為全域裝置存取。

資料服務

資料服務是軟體和配置檔案的組合,它可使應用程式無需修改即可以 Sun Cluster 配置執行。 以 Sun Cluster 配置執行時,應用程式作為受控於群組管理程式 (Resource Group Manager,RGM) 的資源執行。 資料服務使您可以將應用程式 (例如 Sun Java System Web Server 或 Oracle 資料庫) 配置為在叢集而非單一伺服器上執行。

資料服務軟體實現了 Sun Cluster 管理方法,以對應用程式執行以下作業:

資料服務的配置檔案定義資源的屬性,對於 RGM,該資源即代表應用程式。

RGM 控制叢集中故障轉移服務與可延伸資料服務的處理。 RGM 負責啟動和停止叢集所選取節點上的資料服務,以回應叢集成員關係變更。 RGM 使資料服務應用程式可以利用叢集架構。

RGM 將資料服務作為資源控制。 這些實現由 Sun 提供或由使用通用資料服務範本、資料服務開發程式庫 API (DSDL API) 或資源管理 API (RMAPI) 的開發者建立。 叢集管理員建立並管理稱為資源群組的容器中的資源。 RGM 和管理員動作使資源和資源群組在線上狀態與離線狀態之間切換。

資源類型

資源類型是屬性的集合,這些屬性向叢集描述應用程式。 該集合包括有關如何在叢集的節點上啟動、停止以及監視應用程式之資訊。 資源類型還包括應用程式特定屬性,這些屬性需要定義以在叢集中使用應用程式。 Sun Cluster 資料服務有數個預先定義的資源類型。 例如,Sun Cluster HA for Oracle 屬於資源類型 SUNW.oracle-server;而Sun Cluster HA for Apache 屬於資源類型 SUNW.apache

資源

資源是在叢集範圍內定義的資源類型的實例。 資源類型可使應用程式的多個實例安裝在叢集中。 當您初始化資源時,RGM 將為應用程式特定屬性指定值,並且該資源將繼承資源類型層級上的所有屬性。

資料服務可以利用數種類型的資源。 應用程式 (例如 Apache Web Server 或 Sun Java System Web Server) 使用它們所依賴的網路位址 (邏輯主機名稱與共用位址)。 應用程式和網路資源形成受 RGM 管理的基本單位。

資源群組

受 RGM 管理的資源被放入資源群組中以便作為單位管理。 資源群組是一組相關或相互依賴的資源。 例如,源自 SUNW.LogicalHostname 資源類型的資源可能會與源自 Oracle 資料庫資源類型的資源被放入同一資源群組中。 如果在資源群組上啟動了故障轉移或切換保護轉移,則資源群組會作為一個單位來遷移。

資料服務類型

資料服務使應用程式具有高度可用性,並且可延伸服務可以防止重要應用程式在叢集內發生任何單一故障後中斷。

配置資料服務時,您必須將資料服務配置為以下類型的資料服務之一:

故障轉移資料服務

故障轉移是叢集自動將應用程式從出現故障的主要節點轉移至指定的冗餘次要節點的處理程序。 故障轉移應用程式具有以下特性:

如果錯誤監視器偵測到錯誤,則會嘗試於同一節點重新啟動實例,或於其他節點啟動實例 (故障轉移),視資料服務的配置方式而定。 故障轉移服務使用故障轉移資源群組,它是應用程式實例資源與網路資源 (邏輯主機名稱) 的容器。 邏輯主機名稱是 IP 位址,可以在某個節點配置上線,稍後自動在原始節點配置下線,並在其他節點配置上線。

用戶端的服務可能會有短暫中斷,並且可能需要在完成故障轉移之後重新連線。 但是,用戶端並不會知道到提供服務之實體伺服器中的變更。

可延伸資料服務

可延伸資料服務使應用程式實例可以在多個節點上同時執行。 可延伸服務使用兩種資源群組。 可延伸資源群組包含應用程式資源,故障轉移資源群組包含可延伸服務所依賴的網路資源 (共用位址)。 可延伸資源群組可以在多個節點上處於線上狀態,因此多個服務實例可同時執行。 放置共用位址的故障轉移資源群組一次只在一個節點上啟動成為線上。 宿主可延伸服務的所有節點均使用相同的共用位址宿主服務。

叢集透過單一網路介面 (全域介面) 接收服務要求。 基於由平衡資料流量策略設定的數個預先定義的演譯法之一,這些要求將分配到多個節點。 叢集可以使用平衡資料流量策略,來均衡各個節點之間的服務負載。

並列應用程式

Sun Cluster 系統透過使用並列資料庫,提供在叢集的所有節點上共用並列執行的應用程式之環境。 Sun Cluster Support for Oracle Parallel Server/Real Application Clusters 是一組套裝軟體,安裝後可以使 Oracle Parallel Server/Real Application Clusters 在 Sun Cluster 節點上執行。 這種資料服務還使 Sun Cluster Support for Oracle Parallel Server/Real Application Clusters 可透過 Sun Cluster 指令來管理。

並列應用程式已被配置為在叢集環境中執行,以便該應用程式可由兩個或多個節點同時控制。 在 Oracle Parallel Server/Real Application Clusters 環境中,多個 Oracle 實例合作提供對相同共用資料庫的存取。 Oracle 用戶端可以使用任一實例存取該資料庫。 因此,如果一個或多個實例失敗,用戶端可連線至其餘正常運作的實例並繼續存取資料庫。