Asterisk作為目前世界上使用最普遍的企業(yè)級融合通信,VoIP的語音基礎(chǔ)平臺(tái),已經(jīng)廣泛部署在全球不同的云平臺(tái),其用戶體量也非常巨大。在企業(yè)語音通信功能方面支持了非常豐富的業(yè)務(wù)功能,包括SIP呼叫,WebRTC,PSTN接入,實(shí)現(xiàn)了開源IPPBX,F(xiàn)reePBX,免費(fèi)辦公電話系統(tǒng),辦公電話系統(tǒng)的全開源時(shí)代。因此,Asterisk也需要進(jìn)一步進(jìn)行適配來完成Asterisk在華為鯤鵬服務(wù)器環(huán)境的支持。華為云不僅僅支持X86架構(gòu)的下的各種linux開源操作系統(tǒng),同時(shí)也支持華為鯤鵬CPU的環(huán)境下的操作系統(tǒng)。因?yàn)锳sterisk本身已經(jīng)實(shí)現(xiàn)了很多基于云平臺(tái)X86 CPU的安裝部署,筆者不再重復(fù)。今天,我們主要計(jì)劃測試一下華為鯤鵬CPU的云平臺(tái)ECS,基于操作系統(tǒng)Kylin Linux Advanced Server for Kunpeng V10的安裝編譯。
說明,前幾天Asterisk官方剛剛發(fā)布了Asterisk-19版本,因此我們以Asterisk-19為測試版本進(jìn)行編譯安裝。
1、購買華為ECS,選擇鯤鵬CPU和Kylin linux服務(wù)器版本
首先,購買華為云服務(wù),選擇鯤鵬CPU和1vCPUs | 1 GiB | kc1.small.1,操作系統(tǒng)是:Kylin Linux Advanced Server for Kunpeng V10。
用戶可以根據(jù)自己的情況,選擇性能更好的CPU進(jìn)行測試。如果初期測試,建議用戶選擇按需購買,系統(tǒng)不工作時(shí)不計(jì)費(fèi),這樣減少一些部署成本。用戶完成了一步步購買啟動(dòng)程序以后,用戶可以通過公網(wǎng)IP進(jìn)行系統(tǒng)訪問。
安裝好以后,通過公網(wǎng)IP地址使用SSH登錄到華為鯤鵬云后臺(tái)進(jìn)行下一步的安裝流程。這些流程是基本的ECS購買啟動(dòng)的基本流程,華為網(wǎng)站有非常詳細(xì)說明,筆者這里不再做過多介紹。用戶可以根據(jù)自己所處的地區(qū),購買距離自己最近的ECS服務(wù)器。當(dāng)然,為了實(shí)現(xiàn)快速安裝,實(shí)現(xiàn)無障礙訪問github支持庫,用戶也可以選擇國外的節(jié)點(diǎn)來部署鯤鵬云ECS示例。
2、編譯Asterisk-19前的準(zhǔn)備
用戶登錄了華為ECS以后,可以通過命令進(jìn)行安裝部署。在安裝編譯之前,我們首先需要做一點(diǎn)準(zhǔn)備工作。根據(jù)筆者使用情況來看,Kylin Linux的命令基本上是繼承了Centos系統(tǒng)的命令。因此,在安裝過程中,如果用戶熟悉Centos或者其他紅帽子變種發(fā)行版的用戶,可以按照Centos命令安裝支持包,編譯文件。如果發(fā)現(xiàn)有其他命令需要驗(yàn)證的話,建議訪問Kylin Linux文檔說明。為了保險(xiǎn)起見,用戶需要提前更新一下系統(tǒng)支持包,然后執(zhí)行針對Asterisk的支持包的安裝,以下安裝包是Asterisk官方安裝建議支持的支持包,筆者在安裝時(shí)缺省了 “epel-release”。
yum install -y dmidecode gcc-c++ ncurses-devel libxml2-devel make wget openssl-devel newt-devel kernel-devel sqlite-devel libuuid-devel gtk2-devel jansson-devel binutils-devel libedit libedit-devel wget
完整安裝以上所有支持包以后,下載Asterisk-19 tar壓縮文件。
在以上安裝流程中,我們國內(nèi)訪問Asterisk官方比較慢,也可能是因?yàn)楣P者系統(tǒng)帶寬不足導(dǎo)致。因此,如果讀者希望快速安裝的話,可以通過本地直接下載,然后上傳到ECS服務(wù)器。
另外比較重要的一個(gè)支持包是jansson 支持包。這個(gè)支持包直接yum安裝比較頭疼,建議用戶直接通過源代碼安裝方式安裝:
cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf // 如果執(zhí)行錯(cuò)誤,請先安裝此命令,yum install
./configure
make
make install
如果出現(xiàn)“uuid support not found”安裝錯(cuò)誤時(shí),系統(tǒng)缺少了uuid開發(fā)包支持,用戶需要安裝uuid 開發(fā)包:
yum install libuuid-devel
如果出現(xiàn)了libedit 開發(fā)包錯(cuò)誤的話,用戶執(zhí)行:
yum install libedit-devel
如果出現(xiàn)了 libxml2 錯(cuò)誤,用戶需要安裝
yum install libxml2
3、安裝PJSIP和Asterisk
PJSIP是Asterisk目前和未來新版本使用的SIP協(xié)議棧,所以,用戶可以先編譯PJSIP,用戶也可以通過Asterisk編譯自動(dòng)綁定PJSIP的版本。如果用戶需要手動(dòng)編譯PJSIP,用戶可以下載PJSIP,執(zhí)行源代碼編譯安裝:
cd /usr/src
wget https://github.com/pjsip/pjproject/archive/2.10.tar.gz
tar xvf 2.10.tar.gz
cd pjproject-2.10
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
make dep
make
make install
ldconfig
如果PJSIP出現(xiàn)了編譯錯(cuò)誤的話,包括WebTC的支持包等,用戶通過CFLAGS
參數(shù)關(guān)閉選項(xiàng)。
安裝好PJSIP以后,用戶可以開始安裝Asterisk-19,執(zhí)行配置命令來先完成配置設(shè)置。切換到Asterisk-19 源代碼目錄,執(zhí)行環(huán)境檢查,確保所有支持包成功安裝:
cd contrib/scripts/install_prereq install
完成安裝檢測以后,執(zhí)行配置命令。如果發(fā)現(xiàn)有類似錯(cuò)誤出現(xiàn)的話(configure: error: patch is required to configure bundled pjproject),需要安裝patch命令,否則,Asterisk官方補(bǔ)丁不會(huì)執(zhí)行。
yum install patch
在源代碼目錄下執(zhí)行./configure, 如果環(huán)境配置成功的話,就會(huì)出現(xiàn)Asterisk的圖例。
然后執(zhí)行編譯安裝命令:
make && make install
然后執(zhí)行 “make sample”命令, 安裝Asterisk默認(rèn)配置文件:
到這一步,Asterisk的編譯安裝基本完成。我們訪問CLI后臺(tái)參考具體環(huán)境數(shù)據(jù)。
4、啟動(dòng)Asterisk-19,檢測測試環(huán)境和鯤鵬CPU版本。
安裝好Asterisk以后,用戶可以使用命令來進(jìn)入到Asterisk CLI后臺(tái),查看加載的模塊,版本等信息,確保啟動(dòng)沒有出現(xiàn)任何錯(cuò)誤。
Asterisk -vvvvvvvgc
到此為止,基于華為云鯤鵬ECS服務(wù)器安裝的Asterisk-19 成功安裝編譯。具體的配置環(huán)境和CPU消息如下,執(zhí)行l(wèi)shw:
lscpu 顯示的鯤鵬CPU處理器信息:
5、測試Asterisk-19環(huán)境呼叫
安裝啟動(dòng)了Asterisk-19僅表示我們在華為云成功編譯了asterisk。但是,我們這里的Asterisk仍然處于非常不安全的設(shè)置環(huán)境中,還有環(huán)境安全端口SIP,RTP等端口設(shè)置仍然沒有開啟。特別是Asterisk部署在公網(wǎng)環(huán)境中,SBC是必不可少的SIP安全機(jī)制,為了真正實(shí)現(xiàn)華為云鯤鵬服務(wù)器ECS的安全穩(wěn)定的工作,我們需要前端部署一個(gè)SBC來實(shí)現(xiàn)防火墻和拓?fù)潆[藏功能。外部SIP 網(wǎng)絡(luò)資源必須通過SBC來實(shí)現(xiàn)Asterisk(IPPBX)的業(yè)務(wù)處理。
通過SBC支持,此解決方案可以滿基于Asterisk或者FreeSWITCH等開源軟交換開發(fā)的企業(yè)通信平臺(tái),金融客服,呼叫中心,云對講平臺(tái),門禁對講系統(tǒng),外網(wǎng)SIP終端注冊實(shí)現(xiàn)天地物之間的安全穩(wěn)定集成環(huán)境。
6、總結(jié)
通過在華為云ECS實(shí)現(xiàn)安裝編譯Asterisk-19環(huán)境,滿足了對平臺(tái)編譯的要求,另外筆者也驗(yàn)證了Kylin Linux的安裝支持包的完整性,基本上消除了筆者對其他開源軟件部署的支持能力懷疑,至少在Asterisk安裝所需要的支持包相對還是比較完整的。另外,安裝流程相對比較流暢,基本上沒有出現(xiàn)太多安裝包缺失的問題,版本更新也相對比較完整。在后續(xù)的進(jìn)一步測試過程中,筆者將根據(jù)采用SBC和Asterisk/FreeSWITCH對接集成方式,通過鼎信SBC實(shí)現(xiàn)SIP終端,IMS網(wǎng)絡(luò)和網(wǎng)關(guān)的實(shí)時(shí)環(huán)境測試,進(jìn)一步驗(yàn)證其SIP呼叫的業(yè)務(wù)功能的可行性,并且結(jié)合華為的VPN能力,存儲(chǔ)能力等實(shí)現(xiàn)未來的拓展能力,保證邊緣本地設(shè)備和軟件能夠和華為云服務(wù)器端的無縫集成,最終可以支持私有云部署,混合云部署方式的多種業(yè)務(wù)場景的支持,使得華為鯤鵬云生態(tài)鏈更加完善,打通接入端,接入服務(wù)器,業(yè)務(wù)服務(wù)器的各種環(huán)節(jié),協(xié)助企業(yè)通信解決方案廠家,金融領(lǐng)域,安防監(jiān)控,應(yīng)急指揮調(diào)度系統(tǒng)等重點(diǎn)行業(yè)客戶實(shí)現(xiàn)長遠(yuǎn)國產(chǎn)化部署的戰(zhàn)略布局。
參考資料:
- www.dinstar.cn
- www.asterisk.org
- www.asterisk.org.cn
- https://www.huaweicloud.com/