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

用戶端如何註冊到伺服器

本小節說明叢集管理員設置伺服器的方式、識別用戶端的方式、透過應用層和會議層傳送資訊的方式,以及錯誤狀況。

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

叢集管理員必須使用高度可用的 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_EVENTSREMOVE_CLIENT 訊息。用戶端無法在該用戶端傳送 ADD_CLIENT 訊息之前傳送 REMOVE_CLIENT 訊息。

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

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

SC_CALLBACK_REG 訊息的內容

每個 ADD_CLIENTREMOVE_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 事件