使用以 Instant Messaging 運送的重新導向服務來平衡伺服器池內伺服器間的負載 (多節點部署)。效能會直接受到單一部署中伺服器間必要通訊量的衝擊,所以藉由增加兩個使用者共用線上狀態資訊與相同節點上完成之訊息的機率,您就可以改善效能。
本章下列小節包含關於使用 Instant Messaging 重新導向伺服器的資訊:
重新導向伺服器是特別為執行重新導向作業 (例如指定至 Instant Messaging 伺服器的連線端點) 而配置的 Instant Messaging 伺服器實例。將重新導向伺服器增加至您的部署,可藉由將可能於相同主機上互相通訊的使用者分組,來減少伺服器間的通訊量。這可減少您部署中往返於伺服器間的線上狀態通知量。使用者的群組由通訊錄清單內容來決定。通訊錄清單中的共用項目表示較高的通訊可能性。
Instant Messaging 會決定您部署中使用者的最佳除法,並建立使用者的群組或分割區。演算法 Instant Messaging 的用法如下:
決定一或多組使用者,或使用者網路以及它們在您部署中的連線。接著重新導向伺服器會建立稱為使用者對網路對映的表格可將每個使用者對映至使用者網路。
大於最弱繫結上最大分割區大小的分割區使用者網路,例如每個弱連線元件的最大大小,不再大於已配置的分割區大小。弱繫結可由使用者網路間的少數連線來決定,然而,當分割使用者網路時,其他參數,例如地理限制、每個使用者網路連線數,以及其他由管理員設定的限制,也可能會算在內。
以大約等分的大小將組合分配成特定的分割區。首先重新導向伺服器會將網路對分割區表格建立成此程序的一部份,最後建立使用者對分割區表格。這些表格會聯合組成重新導向資料庫。重新導向資料庫會以分割區 ID 來對映每個使用者。您可使用 rdadmin 指令行公用程式來建立與管理此資料庫。
此範例描述的是用戶端成功重新導向的事件順序。
管理員會執行 rdadmin 來產生和/或更新重新導向伺服器。
使用者會連線至重新導向伺服器,並嘗試進行認證。
重新導向伺服器會決定使用者的身份,並在重新導向資料庫中搜尋相符的使用者 ID。
如果重新導向伺服器在重新導向資料庫中找不到使用者 ID,則重新導向伺服器會聯繫下一個重新導向伺服器 (由循環配置資源機制來決定) 以找到包含使用者 ID 的重新導向資料庫。如果在重新導向資料庫中找到了使用者 ID,則重新導向伺服器會取得指定給使用者的分割區 ID。
重新導向伺服器會根據指定的分割區 ID 來決定重新導向使用者的目的節點。
重新導向伺服器會將錯誤傳回包含其重新導向至的節點之用戶端,並關閉到用戶端的連線。
重新導向伺服器會使用 see-other-host 串流錯誤來將此資訊傳回給用戶端。如需詳細資訊,請參閱RFC 3920。
用戶端會解譯錯誤,並建立到傳回錯誤之節點的連線。
重新導向伺服器會繼續監視節點,並依需要更新其「分割區至主機」表格。
資料庫僅包括本機使用者。閘道、元件與遠端使用者不包含於重新導向資料庫中。
重新導向伺服器是 Instant Messaging 伺服器的實例,其唯一功能就是重新導向用戶端連線。重新導向伺服器不會為一般使用者執行任何其他的服務。啟動時,重新導向伺服器會載入伺服器配置與分割區檔案,並建立下列資料結構:
此伺服器可重新導向用戶端連線的目的實例清單。這是重新導向伺服器的實例清單。實例清單是根據 redirect.hosts 檔案中的項目所建立的。
將分割區對映至實體主機的表格。此表格稱為分割區對映。重新導向伺服器會藉由通過實例清單,直至達到指定的最大分割區數為止,來建立分割區對映。
重新導向伺服器會使用兩種資料結構來重新導向用戶端連線。如需重新導向伺服器如何使用此資訊的說明,請參閱範例 7–1。
用戶端與重新導向伺服器之間可能會發生很多的 StartTLS 協商,直到建立連線用戶端身份。用戶端不需要驗證認證,相反地,它只需要使用者 ID。
若要將伺服器實例指定為重新導向伺服器,您需要提供 iim.conf 中的 iim_server.redirect.provider 參數值。一旦您定義了實例做為重新導向伺服器,您需要指定 iim.conf 中其他與重新導向相關之參數的值,以提供進一步的配置資訊。表 7–1 描述重新導向配置參數。
表 7–1 iim.conf 中的重新導向伺服器配置參數
參數 |
預設值 |
說明 |
iim_server.redirect.provider |
無 |
實作 com.sun.im.provider.Redirector 介面之重新導向提供者名稱或類別的清單 (以逗號分隔)。此參數的任何值都會將伺服器實例定義為重新導向伺服器。支援的值包含 db、roundrobin、regex 與實作 com.sun.im.provider.Redirector 介面的類別名稱。 |
iim_server.redirect.to |
無 |
此重新導向伺服器可能重新導向用戶端連線的目的節點清單 (以逗號分隔)。節點名稱可以是各種字母數字式字串。此清單可能會是 iim_server.redirect.to.nodename.host 中所定義的主機超集合。 |
iim_server.redirect.to.nodename.host |
無 |
其中,nodename 是 iim_server.redirect.to 中所存在的節點的名稱。重新導向伺服器要使用 nodename 就必須要有此屬性。 |
iim_server.redirect.to.nodename.usessl |
False |
如果為 true,則會將 nodename 配置為使用舊有 SSL。如需詳細資訊,請參閱在 Instant Messaging 中使用 TLS 與舊有 SSL 的摘要。 |
iim_server.redirect.db.users |
im-db-base/redirect.db |
重新導向資料庫的名稱與位置。 |
iim_server.redirect.db.partitions |
im-cfg-base/redirect.partitions |
重新導向分割區檔案的名稱與位置。 |
iim_server.redirect.db.partitionsize |
5000 |
分割區中的最大使用者數。 |
iim_server.redirect.roundrobin.partitions |
im-cfg-base/redirect.partitions |
重新導向分割區檔案的名稱與位置。 |
iim_server.redirect.pollfrequency |
|
重新導向伺服器對 redirect.hosts 檔案中定義之主機所做的連線間的間隔。重新導向伺服器會輪詢這些主機,以決定它們是否上線,以及是否可接受用戶端連線。 |
您無法將早於 2006Q1 版的 Instant Messenger 用於重新導向伺服器。如果您使用協力廠商用戶端,請確定用戶端支援 XMPP 重新導向。
彙整上述表 7–1 中的資訊。
開啟 iim.conf。
如需找到與修改此檔案的說明,請參閱附錄 A iim.conf 中的 Instant Messaging 配置參數。
修改參數值以符合您的部署。
表 7–1 列出您需要提供值的參數。如 iim.conf 中沒有參數,則新增參數。以下範例顯示 iim.siroe.com 上的 iim.conf 區段,該區段與您必須修改的重新導向伺服器參數對應。
iim_server.redirect.provider=db,roundrobin iim_server.redirect.to=imserverA,imserverB iim_server.redirect.to.imserverA.host=iimA.siroe.com iim_server.redirect.to.imserverB.host=iimB.siroe.com iim_server.redirect.to.imserverA.usessl=false iim_server.redirect.to.imserverB.usessl=false |
儲存您的變更並關閉 iim.conf。
重新整理重新導向伺服器上的配置。
imadmin 重新導向伺服器 |
將用戶端配置為連線至重新導向伺服器,而非多重訊號組合器。
下列小節描述關於管理 Instant Messaging 重新導向伺服器的資訊:
重新導向伺服器是僅被配置用來重新導向的 Instant Messaging 伺服器實例。使用與一般伺服器實例相同的程序來停止、啟動、重新啟動、重新整理與檢查狀態。例如,若要啟動重新導向伺服器,您要鍵入:
imadmin start server |
如需詳細資訊,請參閱停止、啟動、重新整理與檢查 Instant Messaging 元件。
重新導向伺服器是僅被配置用來重新導向的 Instant Messaging 伺服器實例。使用與一般伺服器實例相同的說明與記錄。如需詳細資訊,請參閱第 13 章, 管理 Instant Messaging 的記錄。
您可設定 iim.conf 中的 iim_server.redirect.db.partitionsize 參數來指定最大分割區大小。此參數值等於每個分割區中允許的使用者數。預設值是 5000 (使用者)。
redirect.partitions 檔案定義首要節點 (特定分割區中的使用者將重新導向至該節點),如果需要,也可以定義一系列的備用節點。檔案中每個非空值、非註釋的行定義分割區的節點清單。清單中的每個節點必須與 iim.conf 中做為 iim_server.redirect.to 參數的值所定義的節點對應。如果定義的分割區多於 redirect.partitions 檔案中的行,則會用循環配置資源來處理未指定的分割區。
依預設,會將 redirect.partitions 檔案儲存於下列位置:
im-cfg-base/redirect.partitions |
此 redirect.partitions 檔案範例會假設下列情況:
重新導向伺服器已配置為 db 與 roundrobin 查找。
已將三個節點視為重新導向用戶端的目的:
imserverA
imserverB
imserverC
這三個節點對應下列主機:
iimA.siroe.com
iimB.siroe.com
iimC.siroe.com。
這在 iim.conf 中表示如下:
iim_server.redirect.provider=db,roundrobin iim_server.redirect.to=imserverA,imserverB, imserverC iim_server.redirect.to.imserverA.host=iimA.siroe.com iim_server.redirect.to.imserverB.host=iimB.siroe.com iim_server.redirect.to.imserverC.host=iimC.siroe.com |
至少有兩個使用者分割區。
在此方案中,redirect.partitions 看起來可能是這樣:
imserverA, imserverB, imserverC imserverB, imserverC |
有兩個非空、非指令行表示至少有兩個使用者分割區。第一行定義的是分割區 1 的重新導向行為。重新導向伺服器會先將分割區 1 的使用者重新導向至 imserverA。如果失敗的話,重新導向伺服器會嘗試 imserverB,然後是 imserverC。如果沒有可操作的節點,重新導向伺服器會將錯誤傳回用戶端。
通常,您會依需要使用 rdadmin 公用程式。您並不需要經常重新產生表格,因為名冊通常不會大量變更。然而,您應至少每兩週執行一次公用程式。
停止重新導向伺服器:
imadmin stop redirect |
如果您正在更新現有的重新導向資料庫,需取得先前由 rdadmin 所建立的分割區號碼:
確定您至少擁有與分割區一樣多的使用者項目。
產生新的重新導向資料庫:
例如:
rdadmin generate |
如需其他 rdadmin 選項,請參閱 rdadmin man 頁面。
rdadmin 公用程式會建立新資料庫並將它儲存為 im-db-base/redirect.new.db,除非您指定不同的名稱。
如果您是第一次產生重新的導向資料庫,則將資料庫更名為 redirect.db。
如果您正在更新現有的重新導向資料庫,則以新的重新導向資料庫來取代舊的:
例如:
rm im-db-base/redirect.db cp im-db-base/redirect.new.db im-db-base/redirect.db |
啟動重新導向伺服器:
imadmin start redirect |
重新導向伺服器會監視其重新導向至的用戶端的主機操作狀態。如果重新導向伺服器判定其中一個主機失敗,則會將分割區重新配置為 redirect.partitions 檔案中所定義的後續主機。此外,重新導向伺服器會偵測主機何時返回線上,以將分割重新導向回該主機。重新導向伺服器會以兩種方式來監視主機:
定期輪詢。重新導向伺服器會建立連線,並以 iim.conf 中 iim_server.redirect.pollfrequency 參數所指定的間隔來開啟 XMPP 串流。
用戶端重試監視。如果重新導向伺服器偵測到單一用戶端在短時間內持續重複連線,則可能會判定主機是不可操作的。
在重新導向伺服器上,開啟 iim.conf。
如需找到與修改此檔案的說明,請參閱附錄 A iim.conf 中的 Instant Messaging 配置參數。
設定 iim_server.redirect.pollfrequency 參數。
此值以分鐘為單位。例如:
iim_server.redirect.pollfrequency=200 |
儲存並關閉 iim.conf。
重新整理重新導向伺服器。
imadmin refresh server |
下列小節描述使用 Instant Messaging 重新導向伺服器的最佳操作,以及疑難排解資訊:
在使用憑證進行安全認證的部署中,可能會提示用戶端每次連線時都要接受兩種憑證:一種是用於重新導向伺服器,另一種是用於重新導向用戶端的目的主機。若要避免此情形,請使用可信任的憑證或在兩個伺服器上使用相同的憑證。
重新導向無法用於不支援 RFC 3920 的用戶端,尤其是 see-other-hosts 串流錯誤 (XMPP 重新導向)。您可將 Instant Messenger 2006Q1 或更新的版本與重新導向伺服器搭配使用。如果您使用協力廠商用戶端,則要確定用戶端支援 XMPP 重新導向。
如果您正在使用 LDAP 來儲存使用者屬性,也就是 iim.userprops.store =ldap,您需要確定 iim_ldap.usergroupbinddn 與 iim_ldap.usergroupbindcred 的值對目錄有目錄管理員層級的存取權。
分割區大小應夠大以盡可能避免將使用者網路分割開。然而,分割區不應大於最小系統可支援的大小。
也可以讓重新導向伺服器託管一或多個分割區。為此,您可列出 redirect.partitions 中的重新導向伺服器實例,或 iim_server.redirect.to 參數中的值。然而,您不應讓一個以上的重新導向伺服器做為分割區主機,因為非同步化的 redirect.partitions 檔案可能會引起重新導向循環。