2014-09-26 5 views
0

Я в сети разработчика, и JBoss, который будет контролироваться с помощью JVisualVM, находится за брандмауэром клиента в отдельной сети. JBoss подвергается нам через NAT. Открытый порт JMX работает при использовании telnet из нашей сети разработчиков, но JVisualVM по-прежнему не находит удаленный JMX. По-видимому, это может быть связано с двумя вещами: 1) для доступа к одному или нескольким динамическим сокетам RMI или 2) «java.rmi.server.hostname» не определен. Моя проблема может быть как точками 1 и 2, но, по-видимому, так как мы имеем доступ SSH это может быть решено в соответствии с этим сайтом:JVisualVM удаленная работа, когда пункт назначения находится за NAT?

http://rafaelsteil.com/setting-up-jmx-for-jconsole-visualvm-on-ec2-plus-jetty-configuration/ 

«java.rmi.server.hostname» является публичным именем хост (как пример. com) вашего сервера, без HTTP или чего-либо еще. Вы не можете использовать внутренний адрес, иначе вы не сможете удаленно получить доступ к службе.

Однако у меня есть один вопрос о «java.rmi.server.hostname», должен ли указанный IP-адрес быть внутренним IP-адресом или NAT IP-сервера, который публично отображается в нашей сети разработчиков?

ответ

2

Я на самом деле сам решил эту проблему самостоятельно и понял.

Я бы сказал, что проблема связана с RMI - вы не можете предсказать, какие порты он будет использовать, и поэтому вы не можете заставить его работать с брандмауэром.

Обойти является использование SSH прокси:

  1. SSH к коробке, где ваше приложение работает, но использовать опцию -D так:

    SSH пользователь @ RemoteHOST -D 9999

    Это запустит сокс на локальной машине на порту 9999.

  2. Открыть JVisualVM и в настройках, в разделе «сети» настройка I т использовать сокс на локальном хосте, на порту 9999.

Если вы выше, то вы должны иметь возможность подключиться к удаленному компьютеру, как обычно и так как весь трафик RMI теперь идет над SSH прокси, он пробивается через брандмауэр и работает красиво.

Удачи :-)

+0

Да, я также понял, случайные связи RMI, а также решить проблему с помощью SSH туннелирование. Это как если бы изобретатели не знали, что существуют брандмауэры :) – user1340582

+2

Хороший совет! FYI для меня настройки прокси-сервера JVisualVM не работали. Мне пришлось запускать его следующим образом: 'jvisualvm -J-DsocksProxyHost = localhost -J-DsocksProxyPort = 9999' – zeratul021