您當(dāng)前的位置是:  首頁 > 新聞 > 國(guó)內(nèi) >
 首頁 > 新聞 > 國(guó)內(nèi) >

使用FreeSWITCH和OpenSIPS實(shí)現(xiàn)均衡負(fù)載

2017-09-04 09:23:00   作者:james.zhu   來源:asterisk   評(píng)論:0  點(diǎn)擊:


  均衡負(fù)載一直是大規(guī)模部署中一個(gè)關(guān)鍵技術(shù),關(guān)于這個(gè)解決方案的話題一直很多。今天,筆者給大家介紹一下最近FreeSWITCH官方發(fā)布的一個(gè)會(huì)議視頻-基于FreeSWITHC和OpenSIPS實(shí)現(xiàn)均衡負(fù)載。事實(shí)上,這類官方文檔也很多,但是不是非常詳細(xì),而且同時(shí)能夠完全實(shí)現(xiàn)圖形化管理的文檔介紹還是比較缺乏。開發(fā)人員在視頻會(huì)議中討論了關(guān)于均衡負(fù)載實(shí)現(xiàn)方式,各自解決方案的話題。為了方便中國(guó)讀者的理解,現(xiàn)在我們整理了一下,把視頻會(huì)議中所涉及的話題重新做一個(gè)梳理:
  FreeSWITCH和OpenSIPs均衡負(fù)載的方式
  在目前的FreeSWITCH和OpenSIPS實(shí)現(xiàn)均衡負(fù)載的手段主要通過load_balancer和dispatcher的方式來實(shí)現(xiàn)。當(dāng)然,這兩種方式各有其優(yōu)缺點(diǎn),在實(shí)現(xiàn)均衡負(fù)載時(shí),用戶需要根據(jù)自己的業(yè)務(wù)要求來配置所實(shí)現(xiàn)的方式。
  視頻完整內(nèi)容:
  因?yàn)閘oad_balancer 是stateful 模式,所以可以實(shí)現(xiàn)session的很多業(yè)務(wù)控制,而dispatcher是相對(duì)粗放式的一種調(diào)度方式,它是stateless的模式,所以有時(shí)候?qū)艚械墓芾砜赡軙?huì)“失控”,也就是說,它僅負(fù)責(zé)調(diào)度,至于最后呼叫是否接通,它不會(huì)負(fù)責(zé)處理。
  因?yàn),在具體的業(yè)務(wù)中,大部分的PBX呼叫仍然需要對(duì)呼叫流程實(shí)現(xiàn)完整的管理,所以在負(fù)載處理中,本實(shí)驗(yàn)使用的是load_balancer的方式,同時(shí)結(jié)合了OpenSIPS中的FreeSWITCH模塊,從FreeSWITCH推送資源到OpenSIPS處理中心,OpenSIPS根據(jù)系統(tǒng)資源,CPU狀態(tài),心跳等等事件來對(duì)呼叫進(jìn)行智能分配。
  Load_balancer和dispatcher的優(yōu)缺點(diǎn)
  在上面的敘述中,筆者已經(jīng)簡(jiǎn)單介紹過兩種方式的優(yōu)缺點(diǎn)。這里我們?cè)僮鲆恍┻M(jìn)一步的介紹。Dispatcher 是一種Stateless 的mode,當(dāng)然這樣的模式可以輕松實(shí)現(xiàn)大并發(fā)的處理,但是不會(huì)對(duì)呼叫執(zhí)行任何控制,沒有特定的限制。
  所以這種模式是一種相對(duì)松散型的管理模式。而Load_balancer來說,它是stateful的mode,這種模式可以支持SIP回話中的一些數(shù)據(jù)管理。它也可以實(shí)現(xiàn)大并發(fā)處理,并且可以對(duì)其回話資源進(jìn)行管理,例如通道,語音,視頻等等。如果僅從呼叫數(shù)量上來實(shí)現(xiàn)均衡負(fù)載,也不能真正解決每個(gè)FreeSWITCH負(fù)載的及時(shí)調(diào)度,例如如果一個(gè)FreeSWITCH正在進(jìn)行編碼轉(zhuǎn)換時(shí),機(jī)器的處理能力就會(huì)大打折扣。這時(shí),我們需要真正的相關(guān)數(shù)據(jù)來提醒OpenSIPS。


  OpeSIPS 2.3 以上版本支持了FreeSWITCH模塊
  這個(gè)對(duì)FreeSWITCH來說絕對(duì)是一個(gè)好消息,通過ESL接口可以輕松調(diào)用FreeSWITCH數(shù)據(jù),然后通過訂閱方式輕松傳遞獲取的數(shù)據(jù)到相應(yīng)的模塊中。
  在此視頻介紹中,開發(fā)人員使用的是Load_balancer 來實(shí)現(xiàn)均衡負(fù)載,當(dāng)然開發(fā)人員也提到了這種方式的優(yōu)勢(shì),比如降低了CPU的壓力,實(shí)現(xiàn)了低呼叫延遲(PDD)。
  注意,這里開發(fā)人員比僅僅討論了基于語音呼叫,同時(shí)也討論了電話會(huì)議呼叫和視頻會(huì)議的呼叫處理方式。事實(shí)上,在電話會(huì)議或者視頻會(huì)議呼叫時(shí),用戶需要更多注意會(huì)議呼叫處理的不同,必須需要添加更多的處理策略來調(diào)度視頻會(huì)議或語音電話會(huì)議。因?yàn)椋吘购髢煞N呼叫的用戶可能是完全不同的兩種用戶。


  集成InfluxDB實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)讀取
  在OpenSIPS側(cè),開發(fā)人員使用了InfluxDB實(shí)現(xiàn)對(duì)其數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,從OpenSIPS獲取的數(shù)據(jù),通過cfg 配置文件中的Timer Route的方式把相關(guān)實(shí)時(shí)數(shù)據(jù)輕松寫入數(shù)據(jù)庫。


  Grafana 實(shí)現(xiàn)非常漂亮的動(dòng)態(tài)圖形化顯示方式
  Grafana 是一款非常卓越的實(shí)時(shí)動(dòng)態(tài)圖形化界面系統(tǒng),支持多種方式的數(shù)據(jù)接口,它同時(shí)也支持了InfluxDB。用戶可以輕松通過界面選擇SQL 查詢語句來實(shí)時(shí)顯示所需要的數(shù)據(jù)。在圖例中,PDD為黃色的部分表示是低延遲的PDD,這個(gè)機(jī)器使用的是FreeSWITCH的模塊。



  實(shí)例文檔下載
  根據(jù)視頻會(huì)議人員介紹,OpenSIPS開發(fā)人員會(huì)把主要的配置文件和其他相關(guān)文件上傳到官方網(wǎng)站,大家需要下載這些cfg配置文件來運(yùn)行OpenSIPS和FreeSWITCH。
  以上是開發(fā)者會(huì)議的整個(gè)視頻內(nèi)容的介紹,更多關(guān)于此均衡負(fù)載解決方案的內(nèi)容,請(qǐng)大家關(guān)注官方網(wǎng)站獲取完整的cfg文件來實(shí)現(xiàn)或模擬自己的環(huán)境。
  獲得更多有價(jià)值的技術(shù)文檔和相關(guān)動(dòng)態(tài),請(qǐng)關(guān)注微信公眾號(hào):asterisk-cn,技術(shù)論壇:www.issabel.cn/forum。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題