第 3章. 服務管理

下列將描述如何顯示、啟用、停用、修改、重置以及刪除一項服務,以及如何處理無法 啟動的服務。 在此提供設定特定類型服務的範例。

3.1. 設定一項服務

在設定好磁碟儲存以及安裝好由叢集管理的應用程式後,您可以使用 叢集設定工具 來設定服務以管理這些應用程式以及資源。

如要設定一項服務,請遵照這些步驟:

  1. 假如可行的話,請建立一個程式碼來啟動、停止與檢查服務所使用之應用程式的狀態,請參考 第 3.1.2 節 以取得更多資訊。

  2. 如要收集關於服務資源與內容的資訊,請參考 第 3.1.1 節

  3. 如要設定服務所使用的檔案系統或 raw 裝置,請參考 第 3.1.3 節

  4. 請確定該應用程式軟體可以在每一部成員上執行(在相關的容錯移轉網域或者是叢集中) 以及該服務程式碼(如果有的話)可以啟動與停止服務應用程式,請參考 第 3.1.4 節 以取得升級的指示。

  5. 假如您從一個既有的叢集進行升級,請備份 /etc/cluster.conf 檔案,請參考 第 2.2 節 以取得關於升級的指示。

  6. 啟動 叢集設定工具 以及新增服務,指定在 2 步驟中所取得關於服務資源與內容的資訊。

  7. 儲存您的設定,在一部叢集成員上儲存設定將會自動傳播至其他叢集成員。

如需關於新增一項叢集服務的更多資訊,請參考下列的章節:

3.1.1. 收集服務的資訊

在設定一項服務之前,請收集關於服務資源與內容的所有可用資訊,在某些情況下, 您可以為一項服務指定許多的資源(例如多重的 IP 位址與磁碟裝置)。

您可以使用如 表格 3-1 所述的 叢集設定工具 來指定服務的內容與資源。

屬性說明
服務名稱每一項服務都擁有一個獨特的名稱,一項服務名稱可以含有 1 至 63 個字元,而且必須 是字母(大小寫皆可)、數字、底線、句點與破折號(連字號)的結合。 服務名稱 必須以一個字母或底線開頭。
容錯移轉網域

將服務與既有的容錯移轉網域關聯以找出要用來執行服務的 成員。
當依序的容錯移轉啟用時,假如執行服務的成員失效了,該 服務將會自動地重新定位到依序成員清單中的下一個成員。(優先順序是按照容錯移轉 清單中成員名稱的順序而定。) 請參考 第 2.9 節 以取得更多資訊。

檢查的間歇時間指定成員將檢查與服務相關之應用程式使用情況的頻率(以秒數表示),舉例來說, 當您指定一個非 0 的檢查時間在 NFS 或 Samba 服務時,Red Hat 叢集管理員 將會檢驗必要的 NFS 或 Samba 系統程式是否正在執行中,至於其他類型的服務,Red Hat 叢集管理員 會在呼叫 應用程式服務程式碼的 status 子句後檢查傳回的狀態資訊。 預設情況下,檢查的間歇時間是 0,表示服務的監控已停用。
使用者程式碼假如可行的話,請指定使用來啟動或停止服務之程式碼的完整路徑名稱,請參考 第 3.1.2 節 以取得 更多資訊。
IP 位址

也許會指定一個或更多的 IP 位址給一項服務,這個 IP 位址 (有時稱為"浮動的" IP 位址)與成員的主機名稱乙太網路介面相關聯的 IP 位址 不同,因為當容錯移轉發生時它是隨著服務資源自動重新定位的。 假如用戶端使用這個 IP 位址來存取服務,他們將不知道那一個成員正在執行這個服務,而且用戶端將不會察 覺容錯移轉的進行。
請注意,叢集成員的網路介面卡必須設定 IP 子網路在每一個由服務使用的 IP 位址上。
也可以為每一個 IP 位 址指定網路遮罩與廣播位址,假如沒有指定的話,叢集將使用子網路中網路交互連線的 網路遮罩與廣播位址。

裝置特定檔案指定服務中所使用的每一個共用的磁碟分割區。
檔案系統與共用選項

假如服務使用一個檔案系統,請指定檔案系統的類型、掛載點 以及任何的掛載選項,您可以指定如 mount(8) man page 中所述的任何標準的檔案系統掛載選項,不需要提供掛載資訊 給 raw 裝置(假如服務有用到的話),叢集支援 ext2 與 ext3 檔案系統。
指定是否要啟用強制性地卸載檔案系統,強制性地卸載使得叢集服務管理基礎 架構在進行重置或容錯移轉前,卸載一個檔案系統,即使該檔案系統仍在使用中。 這個 動作也伴隨著終止任何正在存取該檔案系統的應用程式。
您也可以 指定是否要透過 NFS 設定的存取權限匯出檔案系統,請參考 第 5.1 節 以取得詳細資訊。
請指定是否要提供一個 Samba 共享名稱使得 SMB 用戶端能透過 Samba 存取檔案系統。

表格 3-1. 服務內容與資源的資訊

3.1.2. 建立服務的程式碼

叢集的基礎架構藉由執行服務特定的程式碼來起動與停止所指定之應用程式的服務,至於 NFS 與 Samba 等服務,相關的程式碼已嵌入到叢集服務的基礎架構中,結果當您執行 叢集設定工具 來設定 NFS 與 Samba 服務時,請將 『使用者程式碼』 的欄位留空。 至於其他的應用程式類型,有必要指定一個服務的程式碼,例如當您設定一個資料庫應用程式時,請指定相對應資料庫啟動程式碼完整有效的路徑名稱。

服務程式碼的格式必須遵守 System V init 程式碼的慣例, 這個慣例表示程式碼必須有 start, stop, 與 status 等子句,這些程式碼應該在完成執行成功時傳回一個 exit 的狀態。

當服務無法在一部叢集成員上啟動時,Red Hat 叢集管理員 將會試著在其他叢集成員上啟動該服務, 假如其他的叢集成員也無法啟動該服務,Red Hat 叢集管理員 將會試著在所有的成員上停止此服務。 假如因為某種因素導致無法停止該服務,叢集基礎架構將會置放服務在 『失效的』 狀態。 再來系統管理員必須啟動 叢集狀態工具, 反白失效的服務,在他們啟用服務之前點選 停用

除了執行停止與啟動的功能外,程式碼也使用來監視一個應用程式服務的狀態,這是 藉由呼叫服務程式碼的 status 子句來執行的。 如要啟用服務的 監視,請在使用 叢集設定工具 設定服務內容時, 於 『檢查間歇時間』 欄位指定一個非 0 的數值,假如一個 狀態檢查的要求傳回一個非 0 的離開碼到服務程式碼,叢集基礎架構則會先試著重新 啟動之前所執行之成員上的應用程式。 在服務程式碼中不用完整地實作狀態的功能, 假如程式碼並未執行任何實際的監視任務,則必須出現一個 stub status 子句以傳回成功。

一個應用程式 status 子句中所執行的操作可以定制以符合應用程式的需求以及站台 特定的參數,例如一個簡單的資料庫狀態檢查含有檢驗資料庫程序是否正在執行中, 一個更仔細的檢查將會含有資料庫表格的查詢。

/usr/share/cluster/doc/services/examples/ 目錄除了含有 程式碼的範例外,也含有可用來建立服務程式碼的樣板。 請參考 第 4.1 節, 第 4.3 節, 第6章 以取得範例程式碼。

3.1.3. 設定服務磁碟儲存

在建立一項服務之前,請設定服務將使用的共用檔案系統與 raw 裝置,請參考 第 1.4.4 節 以取得更多資訊。

假如在一個叢集服務中使用 raw 裝置,可以使用 /etc/sysconfig/rawdevices 檔案來繫結開機時的裝置,請編輯這個檔案並且指定每次成員開機時要被繫結的 raw 字元裝置與區塊裝置,請參考 第 2.5 節 以取得更多資訊。

請注意不能使用軟體 RAID 與主機為基礎的 RAID 在共用的磁碟儲存上,只有通過認證 的 SCSI 配接卡為基礎的 RAID 卡可以使用在共用的磁碟儲存。

您必須遵照下列的 服務磁碟儲存建議事項

  • 為了達到最佳的效能表現,當您建立檔案系統時請使用 4KB 的區塊大小,請注意某些 mkfs 檔案系統建立工具預設為 1KB 的區塊大小,這將會導致較長 的 fsck 時間。

  • 為了要幫助較快的容錯移轉時間,建議您使用 ext3 檔案系統,請參考 第 1.4.4.6 節 以取得更多資訊。

  • 至於大型的檔案系統,請使用 nocheck 的選項來跳過檢查分割區上 所有區塊群組的程式碼,藉由指定 nocheck 的選項將可大大地減短 掛載一個大型檔案系統所需的時間。

3.1.4. 檢驗應用程式軟體與服務程式碼

在設定一項服務之前,請在叢集中的每一成員上(或者是在容錯移轉網域中的每一成員) 安裝服務所使用的任何應用程式,在這些成員安裝應用程式之後,請檢驗該應用程式可以 執行且可以存取共用的磁碟儲存。 為了防止資料毀損,請勿在一部以上的成員同時執行 一個應用程式。

假如使用一個程式碼來啟動與停止服務應用程式,請在所有的叢集成員上安裝並且測試 該程式碼,並且檢驗它可以被使用來啟動與停止應用程式,請參考 第 3.1.2 節 以取得更多資訊。