欧美,精品,综合,亚洲,好吊妞视频免新费观看,免费观看三级吃奶,一级a片女人自慰免费看

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

OpenSIPS學(xué)習(xí)筆記-cluster集群模塊配置-dialog集群機(jī)制設(shè)置-集群節(jié)點環(huán)境配置示例-2

2021-03-18 10:22:17   作者:james.zhu    來源:Asterisk開源派   評論:0  點擊:


  在上一個章節(jié),筆者介紹了集群注冊的基本配置方式和各種機(jī)制的優(yōu)缺點。本章節(jié)中,筆者將進(jìn)一步介紹關(guān)于OpenSIPS集群支持的另外一種常見的場景-dialog的集群。dialog集群是OpenSIPS在高并發(fā)環(huán)境中一定需要考慮的配置功能。通過集群部署方式,可以保證呼叫中的dialog能夠正確處理完成。
  除了介紹dialog集群以外,筆者將介紹如何配置OpenSIPS集群機(jī)制,通過集群注冊的部署來演示集群的環(huán)境,并且最后介紹幾個集群CLI 命令。
  1關(guān)于OpenSIPS的dialog集群背景介紹
  大家可能都知道,OpenSIPS的dialog模塊在SIP呼叫中起著非常重要的作用,各種應(yīng)用場景都需要dialog支持,例如計費(fèi),呼叫控制,超時設(shè)置等。如果呼叫在處理過程中出現(xiàn)故障的話,顯然,這些應(yīng)用場景也不能得到保障。為了在高并發(fā)或者大規(guī)模部署中保證dialog的數(shù)據(jù)處理的穩(wěn)定性,OpenSIPS支持了對dialog的集群設(shè)置。集群的節(jié)點通過tag并且來共享一些業(yè)務(wù)層面的要求,例如,在節(jié)點中,如果呼叫完成后,哪個節(jié)點處理了BYE請求, 在集群中,哪個節(jié)點生成CDR 呼叫建立等。這些數(shù)據(jù)不可能在全部節(jié)點都在同一時間進(jìn)行各自處理,必須有一個節(jié)點服務(wù)器進(jìn)行處理。
  2OpenSIPS中Dialog集群的基本思路
  和對注冊集群的部署來說,dialog的集群相對比較簡單。其中部分設(shè)置的思路是相同的。完整細(xì)節(jié)的配置說明,讀者可以參考官方文檔,這里僅為了后續(xù)部分章節(jié)中的內(nèi)容支持,這里重點強(qiáng)調(diào)一些主要的知識點:
  • 在復(fù)制集群環(huán)境中,所有的節(jié)點被組成一個組,在同樣的集群中使用anycast方式進(jìn)行廣播(非其他cast方式),關(guān)于其他cast方式的不同,讀者參考網(wǎng)絡(luò)資料。
  • 所有dialog數(shù)據(jù)在整個cluster中進(jìn)行復(fù)制處理
  • 通過BIN 協(xié)議復(fù)制數(shù)據(jù)
  • 集群中的所有節(jié)點共享同一IP地址
  • 通過dialog的更新來實現(xiàn)節(jié)點數(shù)據(jù)的交互,例如,執(zhí)行了re-ininvite等流程。
  dialog集群部署方式同時使用了一個tag 標(biāo)簽的形式,通過對節(jié)點標(biāo)識標(biāo)簽的方式實現(xiàn)dialog節(jié)點的集群備份(HA)設(shè)置。另外,為了實現(xiàn)對呼叫的某些業(yè)務(wù)數(shù)據(jù)的共享,通過集群引擎,在dialog集群使用了共享profile的方式來實現(xiàn)集群文件共享。每個節(jié)點廣播自己的共享profile文件,無需外部數(shù)據(jù)庫支持。接下來的幾個章節(jié)中,筆者將進(jìn)一步介紹dialog標(biāo)簽在集群部署時代使用,節(jié)點共享dialog profile實現(xiàn)dialog 數(shù)據(jù)的同步共享。
  3OpenSIPS環(huán)境中dialog集群的tag標(biāo)簽說明
  筆者在前面很多文章中已經(jīng)講過,dialog是跟蹤呼叫的手段。在呼叫過程中,dialog可以跟蹤呼叫時長,CDR計費(fèi)統(tǒng)計,請求處理等狀態(tài)。讀者可以先閱讀以下文章:
  OpenSIPS學(xué)習(xí)筆記-Dialog的五種狀態(tài)及配置示例
  dialog的tag標(biāo)簽是OpenSIPS中對節(jié)點業(yè)務(wù)進(jìn)行管理的一個手段。在OpenSIPS的環(huán)境中,集群節(jié)點需要通過一定的標(biāo)識來對業(yè)務(wù)流程中某些特定的流程做出標(biāo)識處理,dialog上添加一個 tag標(biāo)簽對邏輯進(jìn)行標(biāo)識是一個比較好的方法。具體來說,dialog tag標(biāo)簽具有以下幾個方面的特征:
  • 每個dialog指定到一個tag標(biāo)簽
  • 每個節(jié)點能夠意識到所有被使用的tag標(biāo)簽
  一個活動的節(jié)點實例僅支持一個特定tag標(biāo)簽,活動的實例處理dialog的ping廣播消息,dialog的生命周期管理
  如果一個活動的節(jié)點出現(xiàn)故障以后,備用節(jié)點將會啟動來繼續(xù)為標(biāo)識的tag服務(wù)。這里將需要一個高可靠性處理,通過主備方式進(jìn)行HA的處理。tag的狀態(tài)將會遷移到另外一個備用的節(jié)點上。注意,一個節(jié)點可以支持多個活動的tag標(biāo)簽來支持多種業(yè)務(wù)需求。
  dialog 標(biāo)簽的語法設(shè)置相對比較簡單,示例如下:
  loadmodule "dialog.so'
  modparam("dialog", "dialog replication cluster", 1)
  modparam("clusterer", "sharing tag", "vip=active")  // 另外一個做passive
  {
  create dialog();
  set_dlg_sharing_tag("vip");
  }
  具體關(guān)于OpenSIPS dialog 集群HA的處理示例。節(jié)點需要通過一個主從備份的方式,通過tag標(biāo)簽對呼叫業(yè)務(wù)中的特定流程進(jìn)行跟蹤處理。節(jié)點雙方互相標(biāo)識;镜奶幚硭悸啡缦聢D例:
 
  此圖例以及以下圖例均來自于互聯(lián)網(wǎng)資源
  在以上示例中,呼叫可能通過幾個不同的節(jié)點來處理每個呼叫具體的流程,因此,各個節(jié)點的tag需要對其具體流程進(jìn)行跟蹤來監(jiān)控一個完整的呼叫記錄和CDR。為了保證你呼叫的流程的完整性,所有的dialog,包括后續(xù)請求的dialog都要通過具體的標(biāo)簽做記錄備份,最后,所有節(jié)點共享dialog 文件數(shù)據(jù)。如果丟失了ACK 請求的dialog記錄信息或者BYE的消息,系統(tǒng)就會丟失完整的CDR記錄,當(dāng)然也不可能繼續(xù)在此記錄上做計費(fèi)的功能。
  4OpenSIPS中dialog集群的dialog profile討論
  在分布式部署的OpenSIPS 平臺的呼叫環(huán)境中,因為負(fù)載均衡或者其他的業(yè)務(wù)要求的需要,一個SIP呼叫可能通過不同的路徑節(jié)點來實現(xiàn)。特別涉及到一些計費(fèi)功能時,或者一些對呼叫數(shù)量有限制的場景中,dialog profile 也需要通過節(jié)點共享dialog profile,通過profile來限定一些服務(wù)要求。通過集群部署共享dialog profile是非常必要的。和注冊集群的方式不同,注冊集群需要數(shù)據(jù)庫的處理來協(xié)同共享數(shù)據(jù),但是,dialog profile 共享無需其他的外部資源,它僅需要OpenSIPS 集群模塊引擎和BIN 響應(yīng)來完成。通過集群方式共享Dialog profile有以下幾個方面的特點:
  • 通過集群引擎可以共享 profile的meta data數(shù)據(jù)
  • dialog 文件復(fù)制各自獨立
  • 無需要求外部數(shù)據(jù)庫引擎中存儲處理
  • 依賴BIN 協(xié)議配合工作
  • 每個節(jié)點僅廣播屬于自己的profile size
  • 每個節(jié)點通過收到的prifile總值介紹所有的size
  • 無需擔(dān)心節(jié)點故障
  • 架構(gòu)設(shè)計相對比較輕,相對比較有更高的效率
  dialog profile 設(shè)置語法如下:
  loadmodule "dialog.so"
  modparam("dialog', "profile replication cluster", 2)
  # 這里 b表示BIN 協(xié)議,也可以是s, 表示shared  通過noSQL 數(shù)據(jù)庫處理
  modparam("dialog""profiles no value", "all calls/b")
  create_dialog();
  set_dis_profile("all_call/b") # /b使用方式同上
  5OpenSIPS環(huán)境下集群注冊的配置
  集群部署是一個非常復(fù)雜的環(huán)境。在配置集群環(huán)境前,讀者需要首先明確測試環(huán)境的配置和核心配置文件,還有節(jié)點之間的網(wǎng)絡(luò)環(huán)境。特別是節(jié)點之間的網(wǎng)絡(luò)需要保證都能夠互相通信,相關(guān)的端口和安全策略必須一致。如果在基于云平臺測試環(huán)境中,用戶最好把所有的節(jié)點都部署在同一區(qū)域,保證你內(nèi)網(wǎng)可以互通,而且安全策略可以互相信任。
  因為資源能力有限,相對于生產(chǎn)環(huán)境,筆者的測試環(huán)境僅限于一個集群平臺,支持3-5個節(jié)點的互通。為了實現(xiàn)簡單配置,筆者使用的是靜態(tài)配置方式,通過界面數(shù)據(jù)庫設(shè)置節(jié)點數(shù)據(jù),而不是通過動態(tài)加載節(jié)點的方式來實現(xiàn)的,所以我們需要預(yù)設(shè)好所有的節(jié)點,假設(shè)節(jié)點環(huán)境配置和我們操作的節(jié)點數(shù)據(jù),環(huán)境,安全策略都是相同的,并且能夠正常共享數(shù)據(jù)庫數(shù)據(jù)。
  首先,我們需要通過OpenSIPS 控制界面,添加集群節(jié)點數(shù)據(jù),添加到主要參數(shù)包括:Cluster ID,Node ID,BIN URL和端口5555,SIP地址和具體節(jié)點描述信息。如果未安裝OpenSIPS GUI的話,用戶需要首先成功安裝好GUI控制界面。特別提醒,筆者僅說明一個節(jié)點的配置,其他節(jié)點的配置也需要完全一致設(shè)置為我們示例的配置,但是一定要注意自己的node id和其他鄰居節(jié)點的節(jié)點的地址和id的不同。
  通過控制界面添加了節(jié)點以后,然后修改cfg 配置文件,加載必要的集群引擎,數(shù)據(jù)庫和BIN 協(xié)議配置:
  • loadmodule "clusterer.so"
  • modparam("clusterer", "my_node_id", __NODE_ID__)  # 主要自己的ID
  • modparam("clusterer", "db_mode", 1)
  • modparam("clusterer", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
  加載BIN 協(xié)議配置:
  • loadmodule "proto_bin.so"
  • listen = bin:eth0:5555 # 用戶也可以監(jiān)聽IP地址
  添加以上必要設(shè)置以后,集群引擎停止,這里,一定要保證所有的節(jié)點的OpenSIPS能夠停止,然后所有節(jié)點保證同步好所有數(shù)據(jù)以后,再重新開啟。用戶必須對集群中的各個節(jié)點需要做多次測試,保證數(shù)據(jù)庫可以同步,保證BIN監(jiān)控正常。經(jīng)過一段時間的測試,各個節(jié)點數(shù)據(jù)能夠正常以后,我們才能進(jìn)行其他注冊等業(yè)務(wù)功能的測試。如果節(jié)點之間都能夠同步,集群服務(wù)器可以正常工作的話,用戶可以通過集群命令看到其他節(jié)點的數(shù)據(jù)狀態(tài),其中一個節(jié)點執(zhí)行以下命令,可以看到節(jié)點列表:
  • opensips-cli -x mi clusterer_list
  • opensips-cli -x mi clusterer_list_topology
  
  最后,如果所有節(jié)點可以正常通信以后,用戶可以測試節(jié)點之間的連通性。具體測試方式很多,用戶可以在本地通過防火墻命令過濾某個節(jié)點的IP(例如:ufw insert 1 allow from 節(jié)點IP to any),然后再通過以上命令查看這些節(jié)點的狀態(tài),然后在關(guān)閉過濾的節(jié)點地址重新檢查所有節(jié)點狀態(tài)。全部完成以上所有的節(jié)點的測試以后,我們才能繼續(xù)進(jìn)行下一步的全共享集群注冊的配置示例操作。
  完成以上配置以后,筆者將在后續(xù)章節(jié)具體介紹如何配置集群注冊示例(包括full sharing, federation 和no SQL配置),共享dialog profile配置示例,安裝配置mongodb實現(xiàn)以上功能。
  6總結(jié)
  在本文章中筆者介紹了關(guān)于dialog 和dialog profile共享的配置處理流程。在對集群dialog的設(shè)置部署中,筆者介紹了dialog的HA設(shè)置方式和標(biāo)簽tag的設(shè)置,針對呼叫流程中不同的業(yè)務(wù)做標(biāo)識處理,通過tag實現(xiàn)對節(jié)點呼叫的完整監(jiān)控。另外,筆者也介紹了關(guān)于集群場景配置的非常重要的流程,包括基本的集群配置,節(jié)點配置和控制界面對節(jié)點的設(shè)置,然后介紹了通過防火墻過濾等手段如何對節(jié)點故障的測試。
  再次說明,筆者測試的集群節(jié)點必須都需要同步同一的配置場景,包括網(wǎng)絡(luò)環(huán)境,安全策略和端口等狀態(tài)都需要完全一致。在保證節(jié)點環(huán)境相同的情況下,我們才能繼續(xù)進(jìn)行集群注冊部署配置和dialog profile共享配置的流程。另外,筆者測試環(huán)境相對簡單,在生產(chǎn)環(huán)境中,可能很多用戶需要根據(jù)自己的場景中一定的調(diào)整,筆者僅是拋磚引玉,希望讀者對OpenSIPS的集群部署有一個完整清晰的概念,集群部署中涉及的太多細(xì)節(jié)需要通過不斷實踐才能完成。
  參考資料:
  https://opensips.org/html/docs/modules/2.4.x/clusterer.html
  https://www.researchgate.net/publication/261427896_Secure_cluster-based_SIP_service_over_Ad_hoc_networks/link/549dbcce0cf2fedbc31198cb/download
  https://blog.opensips.org/2018/03/23/clustering-ongoing-calls-with-opensips-2-4/
  www.freesbc.cn
  關(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
  • 如何使用免費(fèi)會話邊界控制器-FreeSBC,qq技術(shù)分享群:334023047
  • 關(guān)注微信公眾號:asterisk-cn,獲得有價值的通信行業(yè)技術(shù)分享
【免責(zé)聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

相關(guān)閱讀:

專題

CTI論壇會員企業(yè)