0

我正在尝试创建 restcomm 集群:sip-balancer + 一些 restcomm 实例。但我无法连接 restcomm 节点和 sip-loadbalancer。

我使用了本教程 - http://docs.telestax.com/sip-servlets-clustering-high-availability/但是没有得到任何结果。

似乎应该是2个步骤

  1. 更改path-name属性 standalone/configuration/standalone-sip.xml
  2. 添加org.mobicents.ha.javax.sip.BALANCERSstandalone/configuration/mss-sip-stack.properties

据我了解,节点和负载均衡器使用 rmi 作为通道。我看到(我使用 netstat)服务器侦听端口 2000 并且节点与它建立连接。

但是当我尝试从 sip 客户端使用负载均衡器时,它返回“错误 500 - 没有可用节点”。我也使用远程调试 - 节点列表为空。

我错过了什么吗?

ps 我在同一台机器上使用了 docker restromm 实例和 sip-loadbalancer。

谢谢,

4

1 回答 1

0

所以我发现了我的问题。

根据 restcomm 节点上的日志文件 - 它无法通过 RMI 连接到平衡器。

连接错误很奇怪——Connection refused to host: 127.0.0.1有时Connection refused to host: 127.0.1.1

昨天我厌倦了指定java.rmi.server.hostname,但这对我没有帮助

今天我为平衡器创建了小型 RMI 客户端,它在我的本地机器上工作(平衡器也托管在它上面)。但是这个应用程序确实可以在虚拟机上运行。所以我在代码中添加了更多日志并发现:

  1. 应用程序可以查找远程已
  2. 这个的远程端点是127.0.0.1,但应该是远程机器的IP地址

之后,我为我的 sip-balancer 指定externalHostpublic-ip获得了 bean 端点地址127.0.1.1

所以发现了问题 - ubuntu 使用这个“本地” IP 地址作为你的“机器名”。你可以在/etc/hosts.

sip-balancer(java application) 将其作为服务端点的 IP 地址

我的解决方法是 -change 127.0.1.1 to 127.0.0.1/etc/hosts. 之后 sip-balancer 为远程对象提供您机器的真实 IP 地址。

结论:我的问题 - 错误的操作系统:)

常见解决方案:开发者应检查地址类型,不要使用环回地址。

于 2016-02-07T11:55:22.990 回答