gpt4 book ai didi

database - Kamailio:如何根据 IP 负载平衡多个 Asterisk 服务器之间的调用

转载 作者:搜寻专家 更新时间:2023-10-30 23:31:45 28 4
gpt4 key购买 nike

我的场景是:SIP 中继连接到 Kamailio 服务器,该服务器在本地连接到多个 Asterisk 服务器,并且应该在这些 Asterisk 服务器之间负载平衡调用。如何? Kamailio 服务器中有一个 mysql 数据库表,它将传入调用的​​ sip header 的 TO 部分映射到 Asterisk 的 IP 之一。

Kamailio 应该读取 sip header 并在数据库中搜索,在获得 IP 后,将调用转发到正确的 asterisk 服务器。

例如,传入 sip header 中 To 的值为 123456 因此 kamailio 查询数据库并发现号码 123456 中192.168.1.10 因此调用应转发到服务器 192.168.1.10

我已从其网站上阅读多篇文章和 Kamailio 的帮助,但找不到与此场景相关的任何内容。有谁知道kamailio.cfg里面的路由怎么写?

最佳答案

有一些方法可以做到这一点。其中之一是使用调度程序模块。

此模块提供 SIP 负载平衡器功能,可用作 SIP 流量调度器。有许多负载平衡和流量调度算法可供您选择,例如:循环法、基于权重的负载平衡、调用负载分配和 SIP 消息属性散列。

该模块可用作无状态负载均衡器;它不依赖于任何调用状态跟踪模块。如果启用事件/非事件网关的自动发现,它需要 TM 模块。

它非常轻巧,因此适合处理繁重的 SIP 流量。由于该模块占用空间小,并且能够从纯文本文件加载平衡规则,因此适用于嵌入式系统。

让它工作:

您需要添加一个包含 Asterisk IP 列表的 dispatcher.list 文件,如下所示:

1 sip:192.168.0.10 #asterisk 01
1 sip:192.168.0.11 #asterisk 02

然后在转发请求之前,您将执行 ds_select_dst(1, 0);


请确保为您的调度程序模块指定列表文件:

loadmodule "dispatcher.so"
modparam("dispatcher", "list_file", "/var/run/kamailio/dispatcher.list")

如果你想使用数据库而不是文件,你可以通过指定数据库来实现:

modparam("dispatcher", "db_url", "mysql://user:passwb@localhost/database")

此外,还有其他参数指定数据库表等。

您可以在 kamailio dispatcher documentation 中阅读更多内容

关于database - Kamailio:如何根据 IP 负载平衡多个 Asterisk 服务器之间的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48627262/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com