Как мне использовать Jconsole для подключения к EC2? - PullRequest
6 голосов
/ 03 апреля 2012

Я запускаю Jconsole на своем macbook и пытаюсь подключиться к терминалу linux на ec2, у которого нет графики (только доступ из командной строки).

Я запускаю свой код так:

java -jar program.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.remote.ssl=false

Я прочитал здесь , что возникла проблема с доступом через EC2 (после того, как у меня возникли проблемы с подключением), и решение, похоже, было 'java.rmi.server.hostname to the public hostname of the instance'

Я немного запутался, как это сделать. Я пробовал две вещи, одну, чтобы поместить это непосредственно в мой код (в главном разделе void static):

System.setProperty( "java.rmi.server.hostname" , "external_EC2_address" ); //in my real code I have the correct address here

Система приняла его (без ошибок при создании / загрузке исполняемого файла jar). Я также открыл брандмауэр на своем экземпляре, чтобы разрешить весь трафик TCP. Неудачно. Я попытался использовать вышеприведенное утверждение также как флаг для запуска программы, но все равно не повезло.

Есть идеи, как это сделать?

ОБНОВЛЕНИЕ: Это покажет, насколько я зеленый на Java, я сделал еще один шаг (все еще не работает), но я понял, что поместил java -jar filename.jar, а затем параметры не дали мне тот же результат как поставить мой -jar в конце команды. Я попытался это сделать, и программа пытается подключиться, а затем говорит, что соединение не удалось (прежде чем он сразу же скажет это на экране входа в систему).

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Установить свойство имени хоста до запуска виртуальной машины:

java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9005 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.remote.ssl=false \
     -Djava.rmi.server.hostname=the.public.ip \
     -jar program.jar

Добавьте соответствующие правила в вашу группу безопасности.

Наконец, гарантирует, что iptables остановлен , так как это может быть причиной того, что вы не получаете соединение из внешнего мира. Как root (или используя sudo ...):

# service iptables stop
1 голос
/ 03 апреля 2012

Вам необходимо открыть удаленный порт JMX (9005 в соответствии с вашим примером выше) в группе безопасности для вашего экземпляра.

...