Não é possível iniciar o glassfish no ec2 - não é possível abrir a porta

4

Estou tentando iniciar o glassfish em uma AMI baseada no EBS do Ubuntu 10.04 de 64 bits. Eu usei glassfish em servidores não-ec2 sem problemas, mas em ec2 recebo esta mensagem:

$ sudo -u glassfish bin/asadmin start-domain domain1
There is a process already using the admin port 4848 -- it probably is another instance of a GlassFish server.
Command start-domain failed.

Eu sei que o ec2 requer que as regras de firewall sejam modificadas usando o ec2-authorize para permitir o tráfego externo através do firewall, como eu tive que fazer para fazer o ssh funcionar. Isso ainda não explica o erro de porta quando tudo que eu estou tentando fazer é começar glassfish para que eu possa tentar

$ wget localhost:8080
e verifique se está funcionando.

Isso é muito frustrante e eu realmente aprecio qualquer ajuda.

Obrigado.

ATUALIZAÇÃO FINAL:
Desculpe se você veio aqui procurando por respostas. Eu nunca descobri o que estava causando o problema. Eu criei outra instância nova, instalei o mesmo material e o Glassfish funcionou perfeitamente. Algo, obviamente, foi desossado durante a instalação, mas não tenho ideia do que. Eu acho que continuará sendo um mistério.


ATUALIZAR: Aqui está o que eu recebo do netstat:

# netstat -nuptl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      462/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      462/sshd        
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           483/avahi-daemon: r
udp        0      0 0.0.0.0:1194            0.0.0.0:*                           589/openvpn     
udp        0      0 0.0.0.0:37940           0.0.0.0:*                           483/avahi-daemon: r
udp        0      0 0.0.0.0:68              0.0.0.0:*                           377/dhclient3   



UPDATE: mais uma coisa ... Eu sei que a opção de kernel "net.ipv6.bindv6only" pode causar problemas com a rede java, então eu configurei isso:

# sysctl -w net.ipv6.bindv6only=0



ATUALIZAÇÃO: Também verifiquei que não tem nada a ver com o número da porta (4848). Como você pode ver aqui, quando mudei a porta do listener de administrador em domain.xml para 4949, recebo uma mensagem semelhante:

# sudo -u glassfish bin/asadmin start-domain domain1
There is a process already using the admin port 4949 -- it probably is another instance of a GlassFish server.
Command start-domain failed.



ATUALIZAÇÃO:
Aqui está o conteúdo de / etc / hosts:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Eu devo mencionar que eu tenho outro Ubuntu Lucid 10.04 64-bit fatia que não está hospedado no ec2, e configurá-lo da mesma maneira, sem problemas.

O server.log também não oferece muita percepção:

# cat ./server.log 
Nov 20, 2010 8:46:49 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info
INFO: JVM invocation command line:
/usr/lib/jvm/java-6-sun-1.6.0.22/bin/java
-cp
/opt/glassfishv3/glassfish/modules/glassfish.jar
-XX:+UnlockDiagnosticVMOptions
-XX:MaxPermSize=192m
-XX:NewRatio=2
-XX:+LogVMOutput
-XX:LogFile=/opt/glassfishv3/glassfish/domains/domain1/logs/jvm.log
-Xmx512m
-client
-javaagent:/opt/glassfishv3/glassfish/lib/monitor/btrace-agent.jar=unsafe=true,noServer=true
-Dosgi.shell.telnet.maxconn=1
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
-Dfelix.fileinstall.dir=/opt/glassfishv3/glassfish/modules/autostart/
-Djavax.net.ssl.keyStore=/opt/glassfishv3/glassfish/domains/domain1/config/keystore.jks
-Dosgi.shell.telnet.port=6666
-Djava.security.policy=/opt/glassfishv3/glassfish/domains/domain1/config/server.policy
-Dfelix.fileinstall.poll=5000
-Dcom.sun.aas.instanceRoot=/opt/glassfishv3/glassfish/domains/domain1
-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory
-Dosgi.shell.telnet.ip=127.0.0.1
-Djava.endorsed.dirs=/opt/glassfishv3/glassfish/modules/endorsed:/opt/glassfishv3/glassfish/lib/endorsed
-Dcom.sun.aas.installRoot=/opt/glassfishv3/glassfish
-Djava.ext.dirs=/usr/lib/jvm/java-6-sun-1.6.0.22/lib/ext:/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/ext:/opt/glassfishv3/glassfish/domains/domain1/lib/ext
-Dfelix.fileinstall.bundles.new.start=true
-Djavax.net.ssl.trustStore=/opt/glassfishv3/glassfish/domains/domain1/config/cacerts.jks
-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as
-Djava.security.auth.login.config=/opt/glassfishv3/glassfish/domains/domain1/config/login.conf
-DANTLR_USE_DIRECT_CLASS_LOADING=true
-Dfelix.fileinstall.debug=1
-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false
-Djava.library.path=/opt/glassfishv3/glassfish/lib:/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/server:/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64:/usr/lib/jvm/java-6-sun-1.6.0.22/lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
com.sun.enterprise.glassfish.bootstrap.ASMain
-domainname
domain1
-asadmin-args
start-domain,,,domain1
-instancename
server
-verbose
false
-debug
false
-asadmin-classpath
/opt/glassfishv3/glassfish/modules/admin-cli.jar
-asadmin-classname
com.sun.enterprise.admin.cli.AsadminMain
-upgrade
false
-domaindir
/opt/glassfishv3/glassfish/domains/domain1
-read-stdin
true
    
por orange80 20.11.2010 / 08:27

5 respostas

0

Você está certo - o firewall não tem nada a ver com a porta TCP (presumida?).

netstat é seu amigo. Algo semelhante a netstat -nupt -l fornecerá uma indicação de quais processos estão escutando em quais portas.

Deixe-nos saber a saída desse comando e se isso o ajudará na direção certa.

    
por 20.11.2010 / 08:57
0

Eu não sei porque seu arquivo de hosts foi criado, já que eles não têm nada a ver um com o outro.

Isso me parece (com base em suas revisões) que não é que algo está escutando no momento na porta - mas que você pode ter configurado duas coisas para ouvir na mesma porta na mesma instância Glassfish. Portanto, se você iniciar o Glassfish e tentar iniciar os listeners em cada uma das portas, ele falhará e, conseqüentemente, desligará os serviços iniciados anteriormente. Então, quando você usa o netstat antes e depois, ele informa corretamente que nada está escutando atualmente nas portas.

Verifique se cada um dos seus ouvintes está em uma porta diferente usando asadmin , e aposto que você acha que o número da porta é usado duas vezes. Ou pode ser simplesmente que a inicialização esteja fazendo com que duas instâncias sejam iniciadas simultaneamente, o que lhe daria o mesmo comportamento. Você pode tentar configurar um novo domínio em portas diferentes para ver se você tem um problema semelhante?

Boa sorte!

UPDATE: tente usar o seguinte para obter todos os ouvintes:

asadmin get server | grep -i listener
    
por 21.11.2010 / 05:28
0

mesmo problema aqui. Está relacionado a / etc / hosts Eu fiz um cat / etc / hostname e adicionei isso para 127.0.0.1

    
por 13.01.2011 / 04:28
0

Este erro é lançado não apenas quando a porta é tomada, mas também erroneamente quando há um erro com o arquivo /etc/hosts .

Certifique-se de ter definições apropriadas para o seu nome de host (você o mudou recentemente?) no arquivo, e que não está faltando. Por exemplo, se você acabou de alterar seu nome de host (por meio de hostname ou em /etc/hostname ) para server.example.com , certifique-se de que seu arquivo /etc/hosts tenha:

127.0.0.1 server.example.com localhost
    
por 20.03.2011 / 12:17
0

Recentemente, descobri que iniciar um servidor no VPC requer um pouco de configuração extra (uma vez desativada) para começar. Uma pista importante:

 nslookup 'hostname'

deve funcionar. Se não funcionar, é provável que seja o motivo.

Você pode:  1) lançar um servidor no EC2-classic  2) configure seu VPC / host para poder executar o comando acima com sucesso.

Espero que ajude.

    
por 18.03.2015 / 14:02