Как удаленно соединиться с jmx на коте с помощью ssh туннелирование и не повредить ehcache

Я следовал инструкциям в следующей ссылке для создания моего собственного реестра RMI и jmx сервера на единственном порте внутренний кот. Согласно комментариям, я должен установить-Djava.rmi.server.hostname=localhost. После того как я делаю это, я могу действительно соединиться со своим сервером через jconsole, использующий ssh перенаправление портов.

http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx

Однако я нашел, что это имеет очень плохое влияние стороны повреждения нашей ehcache репликации, которая использует RMI. Это приводит жалобу к сбою, что это не может загрузиться от удаленного узла localhost. Я предполагаю, потому что коллеги у всех есть их rmi набор имени хоста сервера к localhost от установки-Djava.rmi.server.hostname=localhost.

У кого-либо есть возможное обходное решение к этой проблеме?

7
задан Bill the Lizard 30 July 2012 в 13:32
поделиться

2 ответа

Я столкнулся с проблемой. Проблема в том, что свойство java.rmi.servername.hostname является глобальным. Чтобы ehcache и сервер jmx работали в гармонии, вы должны выполнить несколько хаков на машине, с которой вы запускаете VisualVM.

Вот что вам нужно сделать. Это основано на использовании Mac в качестве клиента, поэтому при необходимости измените команды.

  1. Удалите -Djava.rmi.server.hostname = localhost.

  2. Напишите приложение-тестер, которое выдаст вам значение InetAddress.getLocalHost (). GetHostAddress () на вашем сервере, который вы хотите профилировать. Это должно дать вам локальный IP-адрес (частный, если нет). Вам нужно будет ссылаться на этот IP-адрес на вашем локальном компьютере. Используйте этот IP-адрес, если в приведенных ниже командах указан IP.

  3. А теперь самое интересное: добавьте внутренний IP-адрес в свой loopback-интерфейс на вашем компьютере. (ifconfig lo0 IP netmask 255.255.255.0 up)

  4. Проверьте, действительно ли это направляет трафик в петлю. Он должен вернуть петлю. (маршрут получить IP)

  5. Инициировать туннель SSH: ssh -C -L IP: PORT: localhost: PORT -L IP: OTHER_PORT: localhost: OTHER_PORT user @ host.

Обратите внимание, что IP-адреса для ssh-туннеля фактически привязаны к loopback. Вы больше не ссылаетесь на localhost, а на IP-адрес машины для всего. Вам также придется изменить свой URL-адрес JMX, чтобы он ссылался на этот IP-адрес вместо localhost.

1
ответ дан 7 December 2019 в 16:40
поделиться

Если вы ищете простую в использовании альтернативу удаленного взаимодействия JMX с поддержкой брандмауэра, стоит попробовать jmx4perl . Это подход на основе агента, который экспортирует JMX MBeans через HTTP / Rest.

Хотя его основное внимание направлено на использование в среде сценариев (например, Perl) в целях мониторинга для запланированной версии 0.70 добавлена ​​клиентская библиотека Java (бета-качество)

1
ответ дан 7 December 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: