2020-12-16

語言: CN / TW / HK

opensips+freeswitch叢集

本文目的:獻給新入坑的小夥伴們,希望對你們有幫助

本方案實現後的大體架構如下:

特點描述:

  1. opensips處理使用者註冊
  2. 每個freeswitch都需要有公網ip能訪問
  3. 一個javaesl可以連線多個freeswitch,也可一個esl連線一個freeswitch,esl需要共享資料庫,freeswitch不需要共享資料庫
  4. 本架構未實現故障轉移真正的高可用,只能算負載均衡

前期準備:

  1. sip協議先了解:https://www.w3cschool.cn/session_initiation_protocol/
  2. 至少看一遍freeswitch權威指南
  3. 至少看一遍opensips官方文件以下內容,然後使用哪個模組就去看哪個模組的文件
    1. Script syntax
    2. Global parameters
    3. Types of routes
    4. Script operators
    5. Script statements
    6. Core functions
    7. Core variables
    8. Scripting flags
    9. Transformations
    10. Asynchronous statements

重要的事情說三遍:

  1. 請完成前期準備內容
  2. 請完成前期準備內容
  3. 請完成前期準備內容

軟體安裝:

  1. freeswitch:https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7
  2. opensip:https://www.opensips.org/Documentation/Manual-3-1

要點:

  1. freeswitch選擇走哪個opensips需要在呼叫時設定sip_route_uri=opensips的地址,複雜的業務離不開 freeswitch的esl

  2. 使用opensips客戶端根據自己的場景選擇模組生成opensips.cfg

    1. 配置除了自動生成的模組如無以下模組,自己手動新增

      1. 使用者註冊模組:registrar,處理使用者註冊,配合auth_db實現資料庫管理使用者名稱密碼

      2. 負載均衡模組:load_balancer,將呼入電話路由到freeswtich,路由中使用lb_start_or_next函式

      3. 撥出到客戶端使用lookup函式

如果如你仔細閱讀了前期準備中的內容,我想現在上圖架構可以輕鬆搭建了。