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

寫入與測試資料服務

使用 TCP 持續作用來保護伺服器

在伺服器端,使用 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 資料庫不可用時資源群組在兩個或更多節點之間反復。