opensips+freeswitch集群
本文目的:献给新入坑的小伙伴们,希望对你们有帮助
本方案实现后的大体架构如下:
特点描述:
- opensips处理用户注册
- 每个freeswitch都需要有公网ip能访问
- 一个javaesl可以连接多个freeswitch,也可一个esl连接一个freeswitch,esl需要共享数据库,freeswitch不需要共享数据库
- 本架构未实现故障转移真正的高可用,只能算负载均衡
前期准备:
- sip协议先了解:https://www.w3cschool.cn/session_initiation_protocol/
- 至少看一遍freeswitch权威指南
- 至少看一遍opensips官方文档以下内容,然后使用哪个模块就去看哪个模块的文档
- 看opensips文档英文有困难的请移步:https://www.yuque.com/wangdd/opensips
重要的事情说三遍:
- 请完成前期准备内容
- 请完成前期准备内容
- 请完成前期准备内容
软件安装:
- freeswitch:https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7
- opensip:https://www.opensips.org/Documentation/Manual-3-1
要点:
-
freeswitch选择走哪个opensips需要在呼叫时设置sip_route_uri=opensips的地址,复杂的业务离不开 freeswitch的esl
-
使用opensips客户端根据自己的场景选择模块生成opensips.cfg
-
配置除了自动生成的模块如无以下模块,自己手动添加
-
用户注册模块:registrar,处理用户注册,配合auth_db实现数据库管理用户名密码
-
负载均衡模块:load_balancer,将呼入电话路由到freeswtich,路由中使用lb_start_or_next函数
-
呼出到客户端使用lookup函数
-
-
如果如你仔细阅读了前期准备中的内容,我想现在上图架构可以轻松搭建了。