通过镜像部署 opensips - housekeeper-software/tech GitHub Wiki
原理
为了部署简单,我们封装了opensips的容器,可以直接从阿里云上pull回来即可。
整个opensips环境分为两个部分:
1)opensips容器,其中包含opensips信令部分和mediaproxy-dispatcher
2)mediaproxy-relay,这个需要直接安装到主机中,它会直接与容器中的dispatcher连接。
本质上,mediaproxy-relay可以安装到多个服务器上,而opensips只需要一台即可。
媒体流的负载均衡是通过dispatcher与relay之间协商解决。
因为我们用到了docker的网桥,所以配置被极大的简化了。一般,我们需要配置三个地方即可。
1)主机上的/etc/mediaproxy/config.ini中的[relay]部分
[Relay]
dispatchers = 172.18.12.1 #这里是固定的,指向网桥中的opensips容器地址
advertised_ip = {public} #这里是脚本中被替换的主机外网地址,如果是云主机,则是公网ip,如果本地主机,则是本机ip地址。
2)opensips容器中的dispatcher不需要配置,已经配置为网桥上正确的地址
3)opensips.cfg只需要配置: # public是被脚本替换的公网ip
listen=udp:172.18.12.1:18888 as {public}:18888
listen=tcp:172.18.12.1:18888 as {public}:18888
listen=tls:172.18.12.1:18889 as {public}:18889
4)opensipsctlrc
SIP_DOMAIN={public} #脚本会替换为外网ip
注意事项
mysql容器也需要挂在网桥上,而且ip地址必须为 172.18.12.2
opensips容器挂在网桥上,而且ip必须为 192.18.12.1
概述
如果不是阿里云服务器,先要配置下 /etc/apt/sources.list,比如用清华源,或者阿里源替换,否则很忙。
如是阿里云主机,则不需要替换。
安装分为三个阶段,需要分步执行。因为中间需要手工创建数据库表,没有办法一次执行完成。
如果阿里云docker无法安装,可以从这里安装:
https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
构建基础环境
先准备公网ip地址,指的是服务器的公网ip地址
执行 ./setup 公网ip
创建opensips数据表
docker exec -it sip /bin/bash
执行: opensipsdbctl create
根据提示操作,输入mysql数据库密码,然后两个yes即可
退出容器。
启动opensips
执行 ./start.sh
添加测试账号
docker exec sip sh -c "opensipsctl add test001 ssc82893388"
安装mediaproxy如果遇到 apt-get error
https://chrisjean.com/fix-apt-get-update-the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available/
apt-get 可能会出现如下的错误:
verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5
此刻执行: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
然后再次 apt-get 即可成功。如果遇到多个错误提示,每个 pubkey都需要添加一次,只需要添加一次