Кластер Restcomm: список узлов пуст в sip-балансировщике
Я пытаюсь создать кластер restcomm: sip-balancer + несколько экземпляров restcomm. Но я не могу соединить узел restcomm и sip-loadbalancer.
Я использовал этот учебник - http://docs.telestax.com/sip-servlets-clustering-high-availability/ однако не получил никакого результата.
Кажется должно быть 2 шага
- менять
path-name
приписыватьstandalone/configuration/standalone-sip.xml
- добавлять
org.mobicents.ha.javax.sip.BALANCERS
вstandalone/configuration/mss-sip-stack.properties
как я понимаю, узел и loadbalancer используют rmi в качестве канала. я вижу (я использовал netstat), что сервер слушает порт 2000 и узел устанавливает соединение с ним.
но когда я пытаюсь использовать loadbalancer от sip-клиента, он возвращает "ошибка 500 - нет доступных узлов". также я использовал удаленную отладку - список узлов пуст.
я что-то пропустил?
PS Я использовал экземпляр перезапуска Docker и sip-loadbalancer на той же машине.
Спасибо,
1 ответ
Так что я нашел свою проблему.
Согласно файлу журнала на узле restcomm - он не может подключиться к балансировщику через RMI.
Ошибка подключения очень странная - Connection refused to host: 127.0.0.1
и иногда Connection refused to host: 127.0.1.1
вчера я устал указывать java.rmi.server.hostname
но это не помогло мне
сегодня я создал небольшой клиент RMI для балансировщика, и он работал с моей локальной машины (балансировщик также размещен на нем). Однако это приложение работало с виртуальной машины. поэтому я добавил больше логов в код и нашел:
- приложение может искать удаленный был
- удаленная конечная точка этого была 127.0.0.1, но должен быть IP-адрес удаленного компьютера
После этого я указал externalHost
а также public-ip
для моего sip-балансера и получил адрес конечной точки бина с 127.0.1.1
Итак, проблема была найдена - Ubuntu использует этот "локальный" IP-адрес для вашего "имени машины". Вы можете найти это в /etc/hosts
,
sip-балансировщик (Java-приложение) получает его как IP-адрес конечной точки для служб
Мое исправление - change 127.0.1.1 to 127.0.0.1
в /etc/hosts
, после этого sip-балансировщик предоставляет реальный IP-адрес вашей машины для удаленных объектов.
Вывод: моя проблема - неправильная операционная система:)
Распространенное решение: разработчик должен проверять тип адреса и не использовать петлевые адреса.