您當(dāng)前的位置是:  首頁 > 資訊 > 文章精選 >
 首頁 > 資訊 > 文章精選 >

OpenSIPS學(xué)習(xí)筆記-cluster集群模塊配置-集群注冊配置示例-3

2021-03-29 13:33:01   作者:james.zhu    來源:Asterisk開源派   評論:0  點擊:


  在關(guān)于OpenSIPS學(xué)習(xí)筆記中的前幾個章節(jié)中,筆者詳細說明了關(guān)于集群模塊的使用和各種業(yè)務(wù)場景。很多讀者看完以前的文章就提出要做OpenSIPS集群,這讓筆者非常無語。集群僅是一個比較寬泛的概念,它可以支持很多具體的業(yè)務(wù)場景的集群,而且針對不同的集群方案,其部署和使用的模塊都非常不同,因此,如果非常寬泛地討論這些問題就沒有任何意義。其中,在集群部署中,通過OpenSIPS集群注冊是最常用的OpenSIPS或者Kamailio平臺應(yīng)用場景之一。關(guān)于集群和其他模塊說明,讀者可以參考:
  OpenSIPS學(xué)習(xí)筆記-cluster集群模塊配置-dialog集群機制設(shè)置-集群節(jié)點環(huán)境配置示例-2
  用戶通過注冊綁定共享的方式,支持SIP賬號通過OpenSIPS部署的各個節(jié)點實現(xiàn)SIP注冊功能。OpenSIPS的集群模塊來保證每個SIP注冊對其他節(jié)點的廣播,另外,因為集群模塊中的每個節(jié)點可以支持同一類型數(shù)據(jù)的能力,因此,這種集群加節(jié)點共享的處理能力可以自動實現(xiàn)一個高可靠性部署方式,一個節(jié)點出現(xiàn)故障,其他節(jié)點可以支持SIP注冊進行工作。下面,筆者使用一個簡單全共享配置示例介紹如何配置集群注冊示例和簡單測試流程。
  配置前說明:
  • 已經(jīng)創(chuàng)建好節(jié)點實例,并且保證幾個實例之間互通互聯(lián),開啟相應(yīng)的端口。此要求在上一個章節(jié)中已經(jīng)說明
  • 已經(jīng)安裝好OpenSIPS 的控制界面
  • 需要SIP用戶端預(yù)先準備好安裝軟電話或者物理話機
  • 為了保持內(nèi)網(wǎng)的連通性,節(jié)點均在僅在同一云平臺同一區(qū)域
  配置集群注冊示例需要大概經(jīng)過以下幾個步驟:
  第一步,每個節(jié)點的用戶需要訪問控制界面,設(shè)置flags 為“seed”模式。從seed字面意思我們也可以大概的含義,就是為了節(jié)點那個找到相應(yīng)的傳播節(jié)點,這樣做的目的是為了集群模塊配合各個節(jié)點能夠正常成功啟動,確保每個節(jié)點在找到相應(yīng)互相支持的節(jié)點后才能確認為一個正常狀態(tài)的節(jié)點。完成了集群模塊的成功啟動以后,節(jié)點之間才真正能夠互聯(lián)互通,互相廣播。因此,這一步是非常重要的一步,用戶必須確保此步驟成功設(shè)置(需要配合后續(xù)配置文件的設(shè)置)。
  然后,用戶需要編輯OpenSIPS的cfg配置文件,修改相應(yīng)的配置參數(shù)。這里,一定要注意自己的集群ID,node-ID和自己表示的node-ID,參考前面章節(jié)的配置說明,這里修改為全共享設(shè)置。
  • modparam("usrloc", "location_cluster", __CLUSTER_ID__)
  • modparam("usrloc", "working_mode_preset", "full-sharing-cluster")
  通過”full-sharing-cluster“ 實現(xiàn)對其他節(jié)點進行廣播。
  接下來,在各個節(jié)點修改為自己相應(yīng)的配置以后,各個節(jié)點需要完成集群同步,因此節(jié)點需要重新啟動自己的實例。
  第四步,各個節(jié)點用戶分別創(chuàng)建一個獨立的SIP用戶。為了保持測試的完整性,用戶通過OpenSIPS 控制界面或者CLI 命令根據(jù)節(jié)點不同創(chuàng)建不同的user和subscriber, 例如1X01, 這里X表示集群中的node ID,如果在節(jié)點3,就是1301。 注意,在上次文章中,我們示例創(chuàng)建了4個節(jié)點。為了簡單測試,我們的密碼使用的也是1X01密碼。
  通過SIP 1000(以前創(chuàng)建的SIP賬號),進行注冊測試。SIP 1000重新注冊,通過CLI命令檢查其地址狀態(tài):
  watch -n0.5 'timeout 1 opensips-cli -x mi ul_dump | grep "AOR\":\|Contact\":"'
  如果一切配置成功的話,從本地節(jié)點可以看到其他的SIP賬號,例如, 1201,1301,甚至于1401等節(jié)點的SIP賬號使用不同終端注冊的狀態(tài): 
 
  如果節(jié)點在“seed”節(jié)點時,用戶可以執(zhí)行集群同步命令查看狀態(tài),返回狀態(tài)應(yīng)該是OK狀態(tài)。
  opensips-cli -x mi ul_cluster_sync
  在呼叫測試流程,我們簡單測試其中一種情況。測試通過非注冊節(jié)點進行呼叫。用戶可以使用SIP 1000對1X01等其他SIP用戶帳戶進行呼叫,然后用戶1X01對1000SIP用戶帳戶進行呼叫,通過命令sngrep觀察其呼叫流程。如果呼叫到一個1X01在非注冊節(jié)點的呼叫時,本地節(jié)點的呼叫會直接呼叫到1X01終端,不經(jīng)過注冊節(jié)點。通過不同SIP終端進行不同的并發(fā)呼叫,通過命令sngrep抓取呼叫路徑。確保所有節(jié)點都介入了呼叫,在各個節(jié)點通過命令查看所有節(jié)點的呼叫跟蹤記錄。測試集群中每個節(jié)點數(shù)據(jù)同步的可持續(xù)性場景中,需要每個節(jié)點都重新啟動OpenSIPS,從其中一個節(jié)點數(shù)據(jù)同步到其他的節(jié)點中。其中,具有“seed”狀態(tài)的節(jié)點負責(zé)執(zhí)行節(jié)點數(shù)據(jù)的同步。在同步數(shù)據(jù)時一定要注意,同步數(shù)據(jù)初始總是一個為空的狀態(tài),這樣可以保證集群數(shù)據(jù)都是絕對干凈的數(shù)據(jù)狀態(tài),否則,所有數(shù)據(jù)可能發(fā)生沖突。因為同步不同節(jié)點的數(shù)據(jù)的處理流程比較復(fù)雜,用戶可以通過查看5555端口的數(shù)據(jù)進行跟蹤:
  ngrep -tqd any -W byline -il '^((?!clusterer-internal).)*$' port 5555
  不同節(jié)點示例需要根據(jù)是否是“seed” 節(jié)點來執(zhí)行不同的命令完成特別操作,所以節(jié)點之間的協(xié)同必須一致。如果是在“seed” 節(jié)點,用戶執(zhí)行:
  service opensips restart
  opensips-cli -x mi ul_dump
  opensips-cli -x mi ul_cluster_sync
  opensips-cli -x mi ul_dump
  經(jīng)過命令查詢,確保全部數(shù)據(jù)成功同步處理,查看其狀態(tài):
 
  如果是其他節(jié)點的實例,執(zhí)行以下命令:
  • service opensips restart
  • opensips-cli -x mi ul_dump
  確保已經(jīng)收到同步數(shù)據(jù),同步成功。
  最后,在本文章中筆者重點分享了如何在OpenSIPS中實現(xiàn)集群注冊的配置示例。筆者通過幾個主要的步驟分享了如何配置控制界面設(shè)置,如何修改cfg配置文件,加載配置參數(shù)以及如何進行集群測試和節(jié)點同步中需要注意的一些問題。
  因為資源有限,筆者在測試環(huán)境中肯定存在很多不足之處,包括云平臺,跨國家地域之間的跨平臺測試和終端網(wǎng)絡(luò)等測試,這些測試需要更多的集群環(huán)境和不同的測試點才能完成。這里僅是一個拋磚引玉,希望對計劃做基于OpenSIPS對計劃做SIP集群注冊的用戶有一定幫助。
  參考資料:
  www.OpenSIPS.org
  www.hiastar.com
  • 關(guān)于Asterisk文檔,參考:www.asterisk.org.cn
  • 融合通信/IPPBX/FreePBX商業(yè)解決方案:www.hiastar.com
  • 最新Asterisk完整中文用戶手冊詳解:www.asterisk.org.cn
  • Freepbx/FreeSBC技術(shù)文檔: www.freepbx.org.cn
  • 如何使用免費會話邊界控制器-FreeSBC,qq技術(shù)分享群:334023047
  • 關(guān)注微信公眾號:asterisk-cn,獲得有價值的通信行業(yè)技術(shù)分享
【免責(zé)聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

專題

CTI論壇會員企業(yè)