Como se conectar a instâncias Java em execução no EC2 usando o JMX

Estamos tendo problemas para conectar nossos aplicativos Java em execução no cluster EC2 da Amazon. Nós definitivamente permitimos tanto a "porta JMX" (que é geralmente a porta de registro RMI)e a porta do servidor (que faz a maior parte do trabalho) para o grupo de segurança para as instâncias em questão. Jconsole se conecta, mas parece travar e nunca mostra nenhuma informação.

Estamos executando o nosso java com algo como o seguinte:

java -server -jar foo.jar other parameters here > java.log 2>&1

Nós tentamos:

Telnet aos portosconectar mas nenhuma informação é exibida.Nós podemos correrjconsole na própria instância usando o remote-X11 sobre o ssh e ele conecta e mostra informações. Então o JREé exportando localmente.Abrindo todas as portas no grupo de segurança. WeeeeUsandotcpdump para garantir que o tráfego não esteja indo para outras portas.Simulando localmente. Podemos sempre nos conectar aos nossos JREs locais ou àqueles que estão sendo executados em outro lugar em nossa rede, usando os mesmos parâmetros do aplicativo.

java -version saídas:

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)

Como um aparte, estamos usando meuJMX simples pacote que nos permite definirambos o registro do RMI e as portas do servidor que são geralmente escolhidas de forma semi-aleatória pelo registro do RMI. Você também pode forçar isso com algo como o seguinte URI do JMX:

service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"

Atualmente, usamos a mesma porta para o servidor e o registro. No passado nós usamosX como a porta de registro eX+1 para a porta do servidor para facilitar as regras do grupo de segurança. Você se conecta à porta de registrojconsole ou qualquer cliente JMX que você esteja usando.

questionAnswers(4)

yourAnswerToTheQuestion