2011-04-13 4 views
3

J'ai un cluster cassandra sur 4 nœuds (chacun exécutant ubuntu 10.04 et cassandra 0.7.4). Tous les nœuds sont connectés à l'aide d'un commutateur et une adresse IP statique est attribuée à chacun (aucun DNS n'est impliqué).Cassandra - nodetool ne fonctionne pas sur une autre machine?

Le nœud semble fonctionner correctement (l'état est 'Normal', tous les nœuds sont en haut, etc.).

Le problème est le suivant: nodetool fonctionne, mais cela ne fonctionne que lorsque la commande nodetool est exécutée sur le même nœud. Lorsque je tente de lancer nodetool de STATIC_IP = 192.168.0.253 sur STATIC_IP = 192.168.0.4 Je reçois l'erreur suivante:

(note: la machine 's3789' a l'adresse IP statique de 192.168.0.253)

[email protected]:/opt/cassandra/apache-cassandra-0.7.4$ bin/nodetool -host 192.168.0.4 ring

Error connection to remote JMX agent! java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: java.net.ConnectException: Connection refused at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128) at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source) at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2343) at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:296) at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:267) at org.apache.cassandra.tools.NodeProbe.connect(NodeProbe.java:137) at org.apache.cassandra.tools.NodeProbe.<init>(NodeProbe.java:107) at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:511) Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) at java.net.Socket.connect(Socket.java:546) at java.net.Socket.connect(Socket.java:495) at java.net.Socket.<init>(Socket.java:392) at java.net.Socket.<init>(Socket.java:206) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)

Les conseils comment résoudre ce problème?

+0

* Instruit deviner: * Avez-vous mis spécifié l'adresse IP et le port d'un fichier d'autorisation 'hosts'? –

+1

Il n'y a pas de fichier 'hosts' deny, pourquoi devrais-je utiliser' allow'? – user3262424

+0

certains le font ... mais si vous avez un fichier 'hosts', pourquoi ne pas y inclure vos adresses IP? –

Répondre

15

de conf/cassandra-env.sh:

# add this if you're having trouble connecting: 
# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>" 
# 
# see 
# https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems_in_jconsole 
# for more on configuring JMX through firewalls, etc. (Short version: 
# get it working with no firewall first.) 
+0

merci. J'aimerais qu'il y ait une bonne documentation facile à comprendre - j'ai passé des heures à essayer de comprendre cela. – user3262424

+0

J'ai eu le même problème que l'affiche originale. Ce correctif m'a aidé mais j'ai également dû ouvrir des ports sur le pare-feu LAN interne afin que les nœuds cassandra puissent communiquer. Alors assurez-vous que tous les ports nécessaires à Cassandra sont ouverts. –

+0

@jbellis: oui travaillé ... mais je n'ai pas compris comment cela fonctionnait dans MAC OS sans ajouter JVM_OPTS = "$ JVM_OPTS -Djava.rmi.server.hostname = à la fin ..? peut-être est lié à la JVM? Pouvez-vous l'expliquer correctement? –

Questions connexes