Sun 提供配置檔案與管理方法範本,讓您得以使各種應用式在叢集中以故障轉移或可延伸的服務來運作。如果 Sun 未提供您要作為容錯移轉或可延伸服務執行的應用程式,您還可使用替代方案。使用 Sun Cluster API 或 DSET API 將應用程式配置為作為容錯移轉或可延伸服務執行。然而,並非所有應用程式都可以成為可延伸服務。
一組可以確定應用程式是否可以成為可延伸服務的條件。若要確定應用程式是否可以成為可延伸服務,請參閱「Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)」中的「分析應用程式的適當性」。以下對這組條件進行了總結。
首先,這樣的服務由一個或多個伺服器實例組成。每一個實例執行於不同的叢集節點上。同一節點無法執行相同服務的兩個或多個實例。
其次,如果服務提供外部邏輯資料儲存區,則作業時應謹慎。多個伺服器實例對此儲存區同的並行存取必須同步化,以避免更新或讀取資料在變更時遺失。請注意,「外部」是用於與處於記憶體中狀態的儲存區相區分。而專有名詞「邏輯」表示該儲存區作為單一實體出現 (儘管其本身可能是複製的)。此外,邏輯資料服務儲存區具有此該特性,即只要伺服器實例更新儲存區其他實例便立即可以「看到」該更新。
Sun Cluster 系統透過叢集檔案系統和全域原始分割區提供此外部儲存體。 例如,假設服務會寫入新的資料到外部登錄檔,或就地修改現存的資料。此伺服器的多個實例執行時,每個實例擁有對此外部記錄檔的存取權,並且每個實例可以同時存取此記錄檔。每一個實例必須將此登錄的存取同步化,否則實例會互相干擾。可以使用一般 Solaris 檔案 fcntl(2) 和 lockf(3C) 鎖定該服務,以達到所需的同步化。
此儲存區類型的另一範例是後端資料庫,例如基於 SPARC 的或 Oracle 的高度可用的 Oracle Real Application Clusters Guard。此類型的後端資料庫伺服器透過使用資料庫查詢或更新作業事件來提供內建同步化。因此,多個伺服器實例無需實作其自己的同步化。
Sun IMAP 伺服器就是非可延伸服務的服務之範例。服務會更新儲存體,但是該儲存體是私有的,而且當多個 IMAP 實例寫入此儲存體時,會因為未同步化而彼此覆寫。IMAP 伺服器必須要改寫,以同步化並行存取。
最後,請注意實例可包含與其他實例分離的私有資料。在這種情況下,服務無需將並行存取同步化,因為資料是私有的,並且只有該實例可以處理它。在這種情況下,您必須注意不要將此私有資料儲存在叢集檔案系統下,因為此資料會變為可全域存取的資料。
Sun Cluster 系統提供以下項目,以使應用程式具有高度可用性︰
作為 Sun Cluster 系統的一部分提供的資料服務
資料服務 API
資料服務的開發程式庫 API
「一般」資料服務
「Sun Cluster Data Services Planning and Administration Guide for Solaris OS」說明如何安裝和配置 Sun Cluster 系統隨附的資料服務。「Sun Cluster 3.1 9/04 Software Collection for Solaris OS (SPARC Platform Edition)」說明如何在 Sun Cluster 框架下將使其他應用程式具有高度可用性。
Sun Cluster API 使應用程式開發人員能夠開發可以啟動和停止資料服務實例的故障監視器和程式檔。使用這些工具,應用程式可以實作實為容錯移轉或可延伸服務。Sun Cluster 系統提供「通用」資料服務。使用此通用資料服務可以快速產生應用程式所需的啟動和停止方法,並可以該資料服務實作為容錯移轉或可延伸服務。