Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

寫入與測試資料服務

本節提供有關寫入與測試資料服務的一些資訊。

使用持續連接

在伺服器端,針對非作用中 (或者網路分割) 的用戶端使用 TCP 持續連接可防止伺服器浪費系統資源。如果尚未清除這些資源 (在工作了足夠長時間的伺服器中),則最後當用戶端當機與重新啟動時浪費的資源會無限增加。

如果主從式通訊使用 TCP 串流,則用戶端與伺服器都應該啟用 TCP 持續連接機制。甚至在非 HA 的單一伺服器情形下,此規定也適用。

其他導向連接協定也可以具有持續連接機制。

在用戶端,使用 TCP 持續連接可使用戶端在網路位址資源從一個實體主機故障轉移或者切換保護移轉至另一個實體主機時得到通知。網路位址資源的該傳送會中斷 TCP 連接。然而,除非用戶端已啟用持續連接,否則,如果當時連接突然中斷,該用戶端未必會獲悉連接中斷。

例如,假定用戶端等待伺服器對長時間要求的回應,用戶端的要求訊息已經到達伺服器,並且在 TCP 層已對該訊息做出回應。在此情形下,用戶端的 TCP 模組不需要保持重新傳輸要求狀態,用戶端應用程式會被封鎖,並等待對要求的回應。

在可能的情況下,除使用 TCP 保持連接機制之外,用戶端應用程式還必須在其應用程式層級自己執行週期性保持連接,因為 TCP 保持連接機制並非在所有可能的界限情況下均完美無缺。使用應用程式層級保持連接一般需要主從式協定支援虛擬作業,或者至少需要有效率的唯讀作業 (例如,狀況作業)。

測試 HA 資料服務

本節提供有關如何在 HA 環境中測試資料服務實現的建議。這些測試情況是一些建議,並不十分詳盡。您需要測試平台 Sun Cluster 配置的存取權限,以免測試工作影響生產機器。

測試在實體主機之間移動資源群組的各種情況下,HA 資料服務行為是否正常。這些情況包括系統當機與使用 scswitch 指令。測試用戶端機器在這些事件之後是否繼續獲取服務。

測試方法的等冪性。例如,暫時將每種方法取代為呼叫原來方法兩次或多次之簡短 shell 程序檔。

協調資源之間的相依性

有時,一種主從式資料服務在執行用戶端的要求時會對另一種主從式資料服務提出要求。通俗地說,如果資料服務 A 依賴資料服務 B,則 A 提供其服務時,B 必須提供其服務。Sun Cluster 透過允許在資源群組內配置資源相依性來提供此要求。此相依性會影響 Sun Cluster 啟動與停止資料服務所依據的順序。請參閱 scrgadm(1M) 線上說明手冊,以取得詳細資訊。

如果您資源類型的資源依賴另一種類型的資源,則您需要指導使用者適當地配置資源與資源群組,或者提供正確配置它們的程序檔或工具。如果相依資源必須在與其所相依資源所在的節點上執行,則必須將這兩種資源配置在同一資源群組中。

決定是使用明確的資源相依性,還是忽略它們並對 HA 資料服務特有程式碼中的其他資料服務之可用性進行輪詢。為了使相依與被相依的兩種資源可以在不同節點上執行,請將它們配置到獨立的資源群組。在這種情況下,就需要進行輪詢,因為不可能跨群組配置資源相依性。

某些資料服務自身未直接儲存任何資料,但是卻依賴另一個後端資料服務來儲存其所有資料。這樣的資料服務將所有讀取要求與更新要求轉換為對後端資料服務的呼叫。例如,考慮一種假定的主從式約會日曆服務,該服務將其所有資料均保留在 SQL 資料庫 (例如,Oracle) 中。該約會日曆服務有其自己的主從式網路協定。例如,它可能已使用 RPC 規格語言( 例如,ONC RPC) 定義了其協定。

在 Sun Cluster 環境中,您可以使用 HA-ORACLE 使後端 Oracle 資料庫高度可用。然後,您可以寫入用於啟動與停止約會日曆常駐程式的簡單方法。一般使用者會向 Sun Cluster 註冊約會日曆資源類型。

如果約會日曆應用程式必須在 Oracle 資料庫所在的同一節點上執行,則一般使用者會在 HA-ORACLE 資源所在的同一資源群組中配置約會日曆資源,並使約會日曆資源依賴 HA-ORACLE 資源。此相依性是使用 scrgadm 中的 Resource_dependencies 特性標記指定的。

如果 HA-ORACLE 資源能夠在約會日期資源所在節點之外的其他節點上執行,則一般使用者會將它們配置到兩個獨立的資源群組。一般使用者可以配置日曆資源群組對 Oracle 資源群組的資源群組相依性。然而,僅當在同一節點上同時啟動或者停止兩種資源時,資源群組相依性才會有效。因此,在啟動日曆資料服務常駐程式之後,該常駐程式可以在等待 Oracle 資料庫變得可用時進行輪詢。在此情況下,日曆資源類型的 Start 方法通常僅會傳回成功,這是因為如果 Start 方法無限期地封鎖,則它會使資源群組成為工作中狀態,這樣會防止對群組進行任何進一步的狀態變更 (例如,編輯、故障轉移或者切換保護移轉)。然而,如果日曆資源的 Start 方法逾時或者以非零狀態退出,則可能導致資源群組在兩個或多個節點之間交替,而 Oracle 資料庫保持無法使用狀態。