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

用戶端如何註冊到伺服器

本節描述管理員如何設定伺服器、識別用戶端、資訊如何在應用層與工作時段層中發送以及錯誤狀況。

有關管理員如何設定伺服器的假定

系統管理員必須為伺服器配置高度可用的 IP 位址 (即,IP 位址不固定給叢集中的某台特定機器使用) 及通訊埠編號。 該管理員還必須將此網路位址發佈給預期的用戶端。 CRNP 未定義如何使此伺服器名稱成為用戶端可用的伺服器名稱。 管理員將使用命名服務 (可使用戶端動態地尋找伺服器的網路位址),或者將網路名稱加入配置檔供用戶端讀取。 該伺服器將作為故障轉移資源類型在叢集內執行。

伺服器識別用戶端的方式

每個用戶端由其回呼位址 (即,其 IP 位址與通訊埠編號) 唯一識別。 通訊埠在 SC_CALLBACK_REG 訊息中指定,IP 位址從 TCP 註冊連線獲得。 CRNP 假定具有同一回呼位址的後續 SC_CALLBACK_REG 訊息均來自同一用戶端,即使發送這些訊息的來源通訊埠不同亦如此。

在用戶端與伺服器之間傳送 SC_CALLBACK_REG 訊息的方式

用戶端透過開啟與伺服器的 IP 位址和埠號碼的 TCP 連線開始註冊。 在建立了 TCP 連接並為寫入做好準備之後,用戶端必須發送其註冊訊息。 該註冊訊息必須是一條已正確格式化的 SC_CALLBACK_REG 訊息,在其前後都不包含額外位元組。

在將所有位元組寫入至串流之後,用戶端必須保持其連接的開啟狀態,才能接收到來自伺服器的回覆。 如果用戶端沒有正確格式化該訊息,則伺服器不會註冊該用戶端,並且會將錯誤的回覆發送給該用戶端。 如果該用戶端在伺服器發送回覆之前已關閉套接字連接,則伺服器會正常註冊該用戶端。

用戶端可以隨時聯絡伺服器。 每當用戶端聯絡伺服器時,該用戶端必須發送 SC_CALLBACK_REG 訊息。 如果該伺服器接收到形式錯誤的、順序紊亂的或者無效的訊息,便會將錯誤的回覆發送給該用戶端。

用戶端無法在發送 ADD_CLIENT 訊息之前發送 ADD_EVENTSREMOVE_EVENTS 或者 REMOVE_CLIENT 訊息。 用戶端無法在發送 ADD_CLIENT 訊息之前發送 REMOVE_CLIENT 訊息。

如果用戶端發送了 ADD_CLIENT 訊息,並且該用戶端已經註冊,則伺服器可以容許此訊息。 在此情形下,伺服器會以靜音方式將舊的用戶端註冊取代為在第二條 ADD_CLIENT 訊息中所指定的新的用戶端註冊。

在大多數情形下,用戶端透過在啟動時發送 ADD_CLIENT 訊息,在伺服器中註冊一次。 並且用戶端會透過將 REMOVE_CLIENT 訊息發送給伺服器,僅取消註冊一次。 然而,CRNP 會為需要動態修改其事件類型清單的那些用戶端提供更多靈活性。

SC_CALLBACK_REG 訊息的內容

每個 ADD_CLIENTADD_EVENTSREMOVE_EVENTS 訊息均包含事件的清單。 下表說明 CRNP 接受的事件類型,其中包括必需的名稱與值對。

如果用戶端:

則該伺服器會以靜音方式忽略這些訊息。

類別與子類別  

名稱與值對 

說明  

EC_Cluster

ESC_cluster_membership

必需的: 無 

可選用的: 無  

註冊所有叢集成員資格變更事件 (節點失效或節點連結) 

EC_Cluster

ESC_cluster_rg_state

有一項是必需的,如下所示: 

rg_name

值類型: 字串 

可選用的: 無  

註冊資源群組 name 的所有狀態變更事件

EC_Cluster

ESC_cluster_r_state

有一項是必需的,如下所示: 

r_name

值類型: 字串 

可選用的: 無  

註冊資源 name 的所有狀態變更事件

EC_Cluster

無 

必需的: 無  

可選用的: 無 

註冊所有 Sun Cluster 事件