华为鲲鹏云平台是华为云战略部署的重要组成部分,已成为了云市场的五朵金花之一。根据国家对网络技术,大数据等相关产业的战略部署的要求,为了具备在下一个五十年在国际市场的竞争力,计算机网络技术的核心技术要掌握在自己手里。网络技术最核心的是操作系统和平台,CPU等核心技术,这些技术首先自主化,国产化是最关键的步骤。华为云鲲鹏服务器为我们提供了非常好的国产化基础平台,行业用户,金融项目和政府一些项目都开始在华为鲲鹏服务器平台进行适配,实现国产化部署。
Asterisk作为目前世界上使用最普遍的企业级融合通信,VoIP的语音基础平台,已经广泛部署在全球不同的云平台,其用户体量也非常巨大。在企业语音通信功能方面支持了非常丰富的业务功能,包括SIP呼叫,WebRTC,PSTN接入,实现了开源IPPBX,智能客服,办公电话系统的全开源时代。因此,Asterisk也需要进一步进行适配来完成Asterisk在华为鲲鹏服务器环境的支持。华为云不仅仅支持X86架构的下的各种linux开源操作系统,同时也支持华为鲲鹏CPU的环境下的操作系统。因为Asterisk本身已经实现了很多基于云平台X86 CPU的安装部署,笔者不再重复。今天,我们主要计划测试一下华为鲲鹏CPU的云平台ECS,基于操作系统Kylin Linux Advanced Server for Kunpeng V10的安装编译。
说明,前几天Asterisk官方刚刚发布了Asterisk-19版本,因此我们以Asterisk-19为测试版本进行编译安装。
1
购买华为ECS,选择鲲鹏CPU和Kylin linux服务器版本
首先,购买华为云服务,选择鲲鹏CPU和1vCPUs | 1 GiB | kc1.small.1,操作系统是:Kylin Linux Advanced Server for Kunpeng V10。
用户可以根据自己的情况,选择性能更好的CPU进行测试。如果初期测试,建议用户选择按需购买,系统不工作时不计费,这样减少一些部署成本。用户完成了一步步购买启动程序以后,用户可以通过公网IP进行系统访问。
安装好以后,通过公网IP地址使用SSH登录到华为鲲鹏云后台进行下一步的安装流程。这些流程是基本的ECS购买启动的基本流程,华为网站有非常详细说明,笔者这里不再做过多介绍。用户可以根据自己所处的地区,购买距离自己最近的ECS服务器。当然,为了实现快速安装,实现无障碍访问github支持库,用户也可以选择国外的节点来部署鲲鹏云ECS示例。
2
编译Asterisk-19前的准备
用户登录了华为ECS以后,可以通过命令进行安装部署。在安装编译之前,我们首先需要做一点准备工作。根据笔者使用情况来看,Kylin Linux的命令基本上是继承了Centos系统的命令。因此,在安装过程中,如果用户熟悉Centos或者其他红帽子变种发行版的用户,可以按照Centos命令安装支持包,编译文件。如果发现有其他命令需要验证的话,建议访问Kylin Linux文档说明。为了保险起见,用户需要提前更新一下系统支持包,然后执行针对Asterisk的支持包的安装,以下安装包是Asterisk官方安装建议支持的支持包,笔者在安装时缺省了 “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压缩文件。
在以上安装流程中,我们国内访问Asterisk官方比较慢,也可能是因为笔者系统带宽不足导致。因此,如果读者希望快速安装的话,可以通过本地直接下载,然后上传到ECS服务器。
另外比较重要的一个支持包是jansson 支持包。这个支持包直接yum安装比较头疼,建议用户直接通过源代码安装方式安装:
cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf // 如果执行错误,请先安装此命令,yum install
./configure
make
make install
如果出现“uuid support not found”安装错误时,系统缺少了uuid开发包支持,用户需要安装uuid 开发包:
yum install libuuid-devel
如果出现了libedit 开发包错误的话,用户执行:
yum install libedit-devel
如果出现了 libxml2 错误,用户需要安装
yum install libxml2
3
安装PJSIP和Asterisk
PJSIP是Asterisk目前和未来新版本使用的SIP协议栈,所以,用户可以先编译PJSIP,用户也可以通过Asterisk编译自动绑定PJSIP的版本。如果用户需要手动编译PJSIP,用户可以下载PJSIP,执行源代码编译安装:
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出现了编译错误的话,包括WebTC的支持包等,用户通过CFLAGS
参数关闭选项。
安装好PJSIP以后,用户可以开始安装Asterisk-19,执行配置命令来先完成配置设置。切换到Asterisk-19 源代码目录,执行环境检查,确保所有支持包成功安装:
cd contrib/scripts/install_prereq install
完成安装检测以后,执行配置命令。如果发现有类似错误出现的话(configure: error: patch is required to configure bundled pjproject),需要安装patch命令,否则,Asterisk官方补丁不会执行。
yum install patch
在源代码目录下执行./configure, 如果环境配置成功的话,就会出现Asterisk的图例。
然后执行编译安装命令:
make && make install
然后执行 “make sample”命令, 安装Asterisk默认配置文件:
到这一步,Asterisk的编译安装基本完成。我们访问CLI后台参考具体环境数据。
4
启动Asterisk-19,检测测试环境和鲲鹏CPU版本。
安装好Asterisk以后,用户可以使用命令来进入到Asterisk CLI后台,查看加载的模块,版本等信息,确保启动没有出现任何错误。
Asterisk -vvvvvvvgc
到此为止,基于华为云鲲鹏ECS服务器安装的Asterisk-19 成功安装编译。具体的配置环境和CPU消息如下,执行lshw:
lscpu 显示的鲲鹏CPU处理器信息:
5
测试Asterisk-19环境呼叫
安装启动了Asterisk-19仅表示我们在华为云成功编译了asterisk,但是,我们这里的Asterisk仍然处于非常不安全的设置环境中,还有环境安全端口SIP,RTP等端口设置仍然没有开启。特别是Asterisk部署在公网环境中,SBC是必不可少的SIP安全机制,为了真正实现华为云鲲鹏服务器ECS的安全稳定的工作,我们需要前端部署一个SBC来实现防火墙和拓扑隐藏功能。外部SIP 网络资源必须通过SBC来实现Asterisk(IPPBX)的业务处理。
通过SBC支持,此解决方案可以满基于Asterisk或者FreeSWITCH等开源软交换开发的企业通信平台,金融客服,呼叫中心,云对讲平台,门禁对讲系统,外网SIP终端注册实现天地物之间的安全稳定集成环境。
6
总结
通过在华为云ECS实现了安装编译Asterisk-19环境,基本上满足了对平台编译的要求,另外笔者也验证了Kylin Linux的安装支持包的完整性,基本上消除了笔者对其他开源软件部署的支持能力怀疑,至少在Asterisk安装所需要的支持包相对还是比较完整的。另外,安装流程相对比较流畅,基本上没有出现太多安装包缺失的问题,版本更新也相对比较完整。在后续的进一步测试过程中,笔者将根据采用SBC和Asterisk/FreeSWITCH对接集成方式,通过鼎信SBC实现SIP终端,IMS网络和网关的实时环境测试,进一步验证其SIP呼叫的业务功能的可行性,并且结合华为的VPN能力,存储能力等实现未来的拓展能力,保证边缘本地设备和软件能够和华为云服务器端的无缝集成,最终可以支持私有云部署,混合云部署方式的多种业务场景的支持,使得华为云生态链更加完善,打通接入端,接入服务器,业务服务器的各种环节,协助企业通信解决方案厂家,金融领域,安防监控,应急指挥调度系统等重点行业客户实现长远国产化部署的战略布局。
参考资料:
www.dinstar.cn
www.asterisk.org
www.asterisk.org.cn
https://www.huaweicloud.com/
,