一組可以確定應用程式是否可以成為可延伸服務的條件。若要確定應用程式是否可以成為可延伸服務,請參閱「Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)」中的「分析應用程式的適當性」。以下對這組條件進行了總結。
首先,這樣的服務由一個或多個伺服器實例組成。每一個實例執行於不同的叢集節點上。同一節點無法執行相同服務的兩個或多個實例。
其次,如果服務提供外部邏輯資料儲存區,則作業時應謹慎。多個伺服器實例對此儲存區同的並行存取必須同步化,以避免更新或讀取資料在變更時遺失。請注意,「外部」是用於與處於記憶體中狀態的儲存區相區分。而專有名詞「邏輯」表示該儲存區作為單一實體出現 (儘管其本身可能是複製的)。此外,邏輯資料服務儲存區具有此該特性,即只要伺服器實例更新儲存區其他實例便立即可以「看到」該更新。
Sun Cluster 系統透過叢集檔案系統和全域原始分割區提供此外部儲存體。 例如,假設服務會寫入新的資料到外部登錄檔,或就地修改現存的資料。此伺服器的多個實例執行時,每個實例擁有對此外部記錄檔的存取權,並且每個實例可以同時存取此記錄檔。每一個實例必須將此登錄的存取同步化,否則實例會互相干擾。可以使用一般 Solaris 檔案 fcntl(2) 和 lockf(3C) 鎖定該服務,以達到所需的同步化。
此儲存區類型的另一範例是後端資料庫,例如基於 SPARC 的或 Oracle 的高度可用的 Oracle Real Application Clusters Guard。此類型的後端資料庫伺服器透過使用資料庫查詢或更新作業事件來提供內建同步化。因此,多個伺服器實例無需實作其自己的同步化。
Sun IMAP 伺服器就是非可延伸服務的服務之範例。服務會更新儲存體,但是該儲存體是私有的,而且當多個 IMAP 實例寫入此儲存體時,會因為未同步化而彼此覆寫。IMAP 伺服器必須要改寫,以同步化並行存取。
最後,請注意實例可包含與其他實例分離的私有資料。在這種情況下,服務無需將並行存取同步化,因為資料是私有的,並且只有該實例可以處理它。在這種情況下,您必須注意不要將此私有資料儲存在叢集檔案系統下,因為此資料會變為可全域存取的資料。