【问题标题】:Is there a way asterisk reconnect calls when internet connection is missed错过互联网连接时,有没有一种星号重新连接呼叫的方法
【发布时间】:2013-05-28 15:42:08
【问题描述】:

具体而言,我将星号与 Heartbeat 主动/被动集群一起使用。集群中有 2 个节点。让我们假设 Asterisk1 Asterisk2。一切都在我的集群中配置得很好。当其中一个节点失去互联网连接、asterisk 服务失败或 Asterisk1 关闭时,asterisk 服务和故障转移 IP 将迁移到幸存节点(Asterisk2)。

问题是如果我们真的在处理一个呼叫时 Asterisk1 掉下来 asterisk 会停止呼叫,我可以重拨直到 asterisk 服务在 asterisk2 中启动(5 秒,不错的时间)。

但是,我的问题是:当星号在通话中失去连接时,有没有办法让星号像 Skype 一样工作?我的意思是,不停止呼叫并尝试重新连接呼叫,并在 Asterisk2 中的星号服务启动时重新连接?

【问题讨论】:

    标签: cluster-computing asterisk phone-call heartbeat reconnect


    【解决方案1】:

    有一些商业系统支持这种行为。

    如果你想在非商业系统上做,有两种方法:

    1) 强制回叫所有带有自动应答标志的电话。要求:星号中的大师。

    2) 使用 xen 和内存映射/镜像系统在具有相同内存状态(相同运行星号)的其他节点 vps 上维护。要求:XEN 中的大师。例如:http://adrianotto.com/2009/11/remus-project-full-memory-mirroring/

    抱歉,这两种方法都需要大师知识水平。

    注意,如果您确实通过 openvpn 隧道进行 sip,那么如果互联网中断长达​​ 20 秒,您很可能不会在隧道内丢失呼叫。这不完全是你问的,但可以工作。

    【讨论】:

      【解决方案2】:

      由于近 2 年后没有公认的答案,我将提供一个:否。这就是为什么。

      1. 如果您从一台 Asterisk 服务器 1 故障转移到 Asterisk 服务器 2,则 Asterisk 服务器 2 不知道正在进行的调用(即端点到端点)。 (即使您共享一个被叫号码的数据库,也可以实时使用星号等)。如果 asterisk 尝试将呼叫的两个分支都转到相同的号码,则这些可能不是呼叫的相同端点。

      2. 另一台服务器无法恢复另一台服务器的 SIP TCP 会话,因为它与最后一台服务器关闭。

      3. MAC 源/目标端口可能相同,您的防火墙不会知道您正在尝试继续同一会话。

      等等……

      如果您的目标是电话服务的高可用性,请查看VoIP Info 网站。其余所有(网络冗余、磁盘冗余、共享块存储设备、路由器故障转移协议等)都是一种干扰……而是专注于早期检测与提供电话服务有关的所有中继/路由/设备的故障,然后提供无需共享任何设备即可实现最高程度的恢复。 (太多 HA 解决方案共享一个磁盘、通道库等,这会造成单点故障)

      【讨论】:

        【解决方案3】:

        您的解决方案需要在两台服务器上实时更新的共享数据库。该数据库将由一个事件记录器管理,该记录器将跟踪所有正在进行的呼叫;可能标记为 LINEUP。如果检测到故障,则故障服务器上的所有调用都将被标记为 DROPPEDCALL。当您的故障转移服务器启动并接管时——使用心跳监控或其他方式——然后它会做的第一件事是生成一组标记为 DROPPPEDCALL 的所有数据库记录的调用文件。然后可以将这些呼叫一起召开会议。

        关于它最难的部分是事件监视器,确保您不会错过任何 RING 或 HANGUP 事件,可能会在系统中留下“幽灵”呼叫,以便在恢复操作中错误地拨打。

        您可能还应该有一种机制来在“管理”机器上构建您的 Asterisk 配置,然后将更改推送到您的呼叫管理器 AST boxen 农场。这样,任何节点都可以用任何其他节点替换。

        您应该拥有 2 个使用复制技术和 Linux 高可用性 (LHA) (1) 的数据库服务器。或者,使用“公共”IP 进行 DNS 循环或负载平衡也会做得很好。这些机器的负载可能足够轻,也可以托管您的配置管理器,并且可以“免费”获得 LHA。

        然后,至少 N+1 AST Boxen 用于呼叫处理。 N 是您计划每秒处理的呼叫数除以 300。“+1”是您的故障转移节点。使用节点轮询,您可以通过从配置管理器中提取正确的配置来设置故障转移节点采用故障机器的身份的机制。

        如果硬件便宜/免费,那么 1:1 LHA 节点冗余始终是一种选择。但是,一般来说,您的 PC 硬件和 Asterisk 软件的故障率相当低;罐头中有 3 或 4 个“9”。所以,真的,你是在努力争取到“5th 9”的最后一点距离。

        我希望这能给你一些关于走哪条路的想法。如果您有任何问题,请告诉我,请花时间“接受”哪个答案能满足您的需要。

        (1)http://www.linuxjournal.com/content/ahead-pack-pacemaker-high-availability-stack

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 2014-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-11
          • 2012-12-24
          相关资源
          最近更新 更多