Кластер Restcomm: список узлов пуст в sip-балансировщике

Я пытаюсь создать кластер 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.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 для балансировщика, и он работал с моей локальной машины (балансировщик также размещен на нем). Однако это приложение работало с виртуальной машины. поэтому я добавил больше логов в код и нашел:

  1. приложение может искать удаленный был
  2. удаленная конечная точка этого была 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-адрес вашей машины для удаленных объектов.

Вывод: моя проблема - неправильная операционная система:)

Распространенное решение: разработчик должен проверять тип адреса и не использовать петлевые адреса.

Другие вопросы по тегам