Как подключиться к экземплярам Java, работающим на EC2, используя JMX
У нас проблемы с подключением к нашим Java-приложениям, работающим в Amazon.Кластер EC2. Мы определенно позволили какПорт JMX " (обычно это порт реестра RMI)а также порт сервера (который выполняет большую часть работы) для группы безопасности для рассматриваемых экземпляров. Jconsole подключается, но кажется зависает и никогда не показывает никакой информации.
Мы запускаем нашу Java с чем-то вроде следующего:
java -server -jar foo.jar other parameters here > java.log 2>&1
Мы попробовали:
Telnets к портамсоединять но информация не отображается.Мы можем запуститьjconsole
на самом экземпляре, использующем remote-X11 через ssh, и он подключается и показывает информацию. Так что JREявляется экспортировать его локально.Открытие всех портов в группе безопасности. Weeee.С помощьюtcpdump
чтобы убедиться, что трафик не идет на другие порты.Имитирую это локально. Мы всегда можем подключиться к нашим локальным JRE или к другим в нашей сети, используя те же параметры приложения.java -version
выходы:
OpenJDK Runtime Environment (IcedTea6 1.11.5) (amazon-53.1.11.5.47.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Кроме того, мы используем мойПростой JMX пакет, который позволяет нам установитьи то и другое Реестр RMI и порты сервера, которые обычно выбираются регистром RMI полуслучайно. Вы также можете вызвать это с помощью следующего URI JMX:
service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"
В наши дни мы используем один и тот же порт как для сервера, так и для реестра. В прошлом мы использовалиX
в качестве порта реестра иX+1
для порта сервера, чтобы упростить правила группы безопасности. Вы подключаетесь к реестру-порту вjconsole
или любой клиент JMX, который вы используете.