顶顶通呼叫中心中间件-群集模式配置

文章目录


群集模式介绍

在大规模的外呼或者呼入系统,比如整个系统需要1万并发,单机最高也就3000-5000并发,这时候就需要多机群集了。顶顶通呼叫中心中间件使用的是 redis 数据库,将多个FreeSWITCH(mod_cti)连接到同一个redis,这样就可以很容易的配置成群集系统。


联系我们

有意向了解呼叫中心中间件的用户,可以点击该链接添加工作人员的微信:顶顶通小何


提示:以下是本篇文章正文内容,下面案例可供参考


配置流程

  1. 打开需要群集的 Freeswitch 的配置文件cti.json ,文件路径:/ddt/fs/conf/:修改Redis部分,使需要集群的 Freeswitch连接到同一个 Redis中。具体配置如图所示:

  2. 修改 Freeswitch 的域名:Freeswitch 的域名设置在配置文件cti.conf.xml中,路径:/ddt/fs/conf/autoload_configs/。需要将群集的 Freeswitch 的域名设置成一样的,设置完成后重启 Freeswitch:

  3. 配置拨号方案:

    • 创建一个json文件,把以下的内容放进json文件中,并保存。然后其中一个 CCAdmin,切换到 拨号方案页面导入该 json 文件:
json 复制代码
{
    "version": 2,
    "cti_dialplan_extension": {
        "群集分机": "{\"condition\":[{\"field\":\"${sip_h_X-cti_dialer_number}\",\"action\":[{\"application\":\"export\",\"data\":\"nolocal:sip_invite_req_uri=sip:${sip_h_X-cti_dialer_number}@$${local_ip_v4}\"}],\"expression\":\".+\",\"break\":\"never\"},{\"field\":\"\",\"action\":[{\"application\":\"export\",\"data\":\"process_cdr=false\"},{\"application\":\"bridge\",\"data\":\"user\\\/${destination_number}\"}]}]}"
    }
}
  1. 创建名为"cluster"的呼叫路由,然后在该呼叫路由中启用"群集分机"这一拨号方案。具体操作如图所示:

  2. 创建名为"cluster"的 SIP,然后根据下方所给的配置方案在该SIP中进行修改:

    • 呼叫路由:cluster
    • sip-port:$${cluster_port}
    • sip-ip:$${local_ip_v4}
    • rtp-ip:$${local_ip_v4}
    • apply-inbound-acl:cluster
    • disable-register::true
    • auth-calls:false
    • auth-calls-acl-only:false
  3. 修改配置文件acl.confvars

    • acl.conf 配置文件修改如图所示:
    • vars 配置文件修改如图所示:
  4. 在需要群集的不同 Freeswitch 的路径中:/ddt/fs/conf/,创建一个名为private_vars.xml的文件,然后把以下内容保存到该文件中:

    以下内容说明:

    • 如果当前 Freeswitch 需要公网使用sip服务,就把内容中的本机外网IP替换成公网IP;如果只是纯内网使用,则把内容中的本机外网IP替换成$${local_ip_v4}
    • 如果cluster的SIP配置是:sip-ip:$${local_ip_v4},就把第三行内容删除;但如果cluster的SIP配置是:sip-ip:233.22.12.32这种配置了具体IP的,则根据第三行内容提示,设置成互通的IP
XML 复制代码
<include>
  <X-PRE-PROCESS cmd="set" data="external_ip=本机外网IP"></X-PRE-PROCESS>
  <X-PRE-PROCESS cmd="set" data="cluster_ip=如果群集互通用的profile配置sip-ip是$${local_ip_v4},这个配置删除,如果是单独IP,这里设置互通IP"></X-PRE-PROCESS>
</include>
  1. 重启 Freeswitch,然后打开 CCAdmin ,验证群集模式是否配置成功的方法,如图所示:
    如果点击后没有出现多个 Freeswitch,首先查看主机名是否是一样的。主机名相同的话,是无法显示多个 Freeswitch 的。修改服务器主机名的方法可参考:修改服务器主机名的方法

群集模式下呼叫

在群集系统中,转接分机是最棘手的问题,因为分机一般只注册到一个FreeSWITCH上面。顶顶通呼叫中心中间件把分机注册信息和当前通话信息存储到redis里面,转接分机的时候,从redis中获取分机注册的FreeSWITCH ip,然后把呼叫转给这个FreeSWITCH,这样分机只需要注册到群集中的任意一个FreeSWITCH,就可以接听群集中的所有FreeSWITCH的来电了。

转接流程: 呼叫分机1000

  • 判断分机1000注册在哪个FS
  • 如果注册在本机直接呼叫1000 (拨号串 user/1000 )
  • 如果注册到其他fs, 呼叫1000送到指定fs(拨号串 sofia/cluster/1000@fsip)
  • 1000实际注册的fs接收到呼叫1000的请求,执行呼叫1000

线路配置

  • 单机版本使用 拨号串配置为 user/120
  • 群集版本 拨号串配置为 cluster/120
相关推荐
~山有木兮14 小时前
LiteHub中间件之限流实现
网络·http·中间件
fo安方21 小时前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
Code季风1 天前
Gin 中间件详解与实践
学习·中间件·golang·go·gin
一只程序汪2 天前
【如何实现分布式压测中间件】
分布式·中间件
William一直在路上2 天前
主流分布式中间件及其选型
分布式·中间件
listhi52012 天前
深入浅出Node.js中间件机制
中间件·node.js
骆驼Lara12 天前
前端跨域解决方案(7):Node中间件
前端·javascript·中间件
无糖钨龙茶13 天前
理解后端开发中的中间件(以gin框架为例)
中间件·go·gin
白总Server13 天前
轻量化分布式AGI架构:基于区块链构建终端神经元节点的互联网智脑
分布式·microsoft·中间件·架构·区块链·github·agi