亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

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

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

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


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

相關(guān)閱讀:

專題

CTI論壇會(huì)員企業(yè)

昆明市| 嵊泗县| 东山县| 盈江县| 高密市| 盖州市| 湖口县| 松原市| 海盐县| 平顺县| 万州区| 江城| 北辰区| 光山县| 沭阳县| 岚皋县| 淳安县| 元朗区| 湖州市| 中超| 湖口县| 高要市| 会东县| 桃园县| 曲沃县| 商洛市| 石河子市| 潼关县| 仁寿县| 武夷山市| 兴义市| 博乐市| 平陆县| 天峨县| 嘉峪关市| 阿合奇县| 墨竹工卡县| 东安县| 中超| 抚远县| 永康市|