J'ai construit le serveur Cassandra 2.0.3, puis je l'exécute. Il commence puis s’arrête avec des messages:
X:\MyProjects\cassandra\Apache-cassandra-2.0.3-src\bin>cassandra.bat >log.txt
Java.lang.RuntimeException: Unable to gossip with any seeds
at org.Apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.Java:1160)
at org.Apache.cassandra.service.StorageService.checkForEndpointCollision
(StorageService.Java:416)
at org.Apache.cassandra.service.StorageService.joinTokenRing(StorageServ
ice.Java:608)
at org.Apache.cassandra.service.StorageService.initServer(StorageService
.Java:576)
at org.Apache.cassandra.service.StorageService.initServer(StorageService
.Java:475)
at org.Apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.ja
va:346)
at org.Apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon
.Java:461)
at org.Apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.jav
a:504)
Qu'est-ce que je peux changer pour l'exécuter?
J'ai eu un problème similaire avec mon cluster Cassandra v2.0.4 exécutant un seul nœud.
Vérifiez votre cassandra.yaml et assurez-vous que vos valeurs "listen_address" et "seed" correspondent, à l'exception du fait que la valeur de seed nécessite des guillemets.
Vous pouvez rencontrer ce problème si votre adresse IP privée est différente de celle publique (comme sur AWS). Par exemple, l'hôte pense que c'est "172.31.0.2" lorsqu'il est visible sous "55.70.33.10".
La solution à ce problème est la suivante:
listen_address: 172.31.0.2
broadcast_address: 55.70.33.10
dans cassandra.yaml
Assurez-vous que votre entrée cluster_name
correspond sur tous les nœuds du cluster .__ (vous devrez peut-être supprimer votre stockage si vous avez changé le nom du cluster).
Vérifiez que tous les nœuds peuvent s'interroger
broadcast_rpc_address
et listen_address
doivent être définis sur l'adresse IP locale (pas sur l'hôte local ou 127.0.0.1
)
les semences doivent indiquer l'adresse IP de la ou des semences
Si vous utilisez AWS et utilisez le Ec2MultiRegionSnitch
, vous devez définir les valeurs de départ pour les adresses IP publiques plutôt que pour les adresses IP privées.
dans cassandra.yaml, je mets à jour la graine du nom de domaine en adresse IP. et il fonctionne.
J'ai eu le même problème sur Ubuntu 16.04. Je ne sais pas lequel de ces changements a fonctionné, où XXX.XXX.XXX.XXX
est votre adresse IP publique à laquelle vous devez faire face. Vous trouverez ci-dessous une sélection de cassandra.yaml
seed_provider:
# Addresses of hosts that are deemed contact points.
# Cassandra nodes use this list of hosts to find each other and learn
# the topology of the ring. You must change this if you are running
# multiple nodes!
- class_name: org.Apache.cassandra.locator.SimpleSeedProvider
parameters:
# seeds is actually a comma-delimited list of addresses.
# Ex: "<ip1>,<ip2>,<ip3>"
- seeds: "XXX.XXX.XXX.XXX"
listen_address: XXX.XXX.XXX.XXX
broadcast_address: XXX.XXX.XXX.XXX
broadcast_rpc_address: XXX.XXX.XXX.XXX
listen_on_broadcast_address: true
start_rpc: true
rpc_address: XXX.XXX.XXX.XXX
Je devais aussi redémarrer ma machine virtuelle pour une raison quelconque. ¯_ (ツ) _/¯
Pour une configuration rapide d'un seul noeud sur RHEL, j'ai procédé comme suit: Obtenez des informations sur la configuration de votre interface réseau:
# /sbin/ifconfig -a
Il listera les interfaces et les adresses IP auxquelles ils sont attachés. Généralement, une interface "Ethernet" et un "bouclage local" seront affichés ..__ Obtenez les adresses IP associées.
Puis éditez conf/cassandra.yaml:
rpc_address: [Local Loopback address]
broadcast_rpc_address: [Ethernet address]
listen_address: [Local Loopback address]
broadcast_address: [Ethernet address]
listen_on_broadcast_address: true
seed_provider:
- class_name: org.Apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "[Ethernet address]"
Ensuite, ouvrez les ports appropriés sur le pare-feu Linux, à savoir 9042, 7000 et 7001. Plus d'informations sur l'ouverture de ports sur Linux ici: http://ask.xmodulo.com/open-port-firewall-centos- rhel.html
Cela m'est arrivé parce que dans ma configuration, les paramètres "intial_token" étaient spécifiés (je pense parce que je viens de copier le fichier de configuration à partir d'un autre membre du cluster). Après avoir effacé le répertoire de données, commenté le réglage et redémarré le nœud, cela a bien fonctionné pour moi.
J'ai vécu cette erreur aujourd'hui ...
Je ne pouvais trouver aucune raison pour l'erreur autre que des problèmes de minutage.
J'ai redémarré plusieurs fois et au bout d'un moment ça colle. On dirait qu'ils s'attendent à une communication bidirectionnelle sur le canal des commérages et si cela ne se produit pas assez rapidement (ce qui me semble très peu de temps), ils laissent tomber la ligne et génèrent cette erreur.
Dans mon cas, je viens de mettre à jour mon logiciel et de redémarrer l'ordinateur. Donc, ce n'était clairement pas un problème de connexion entre les ordinateurs (j'ai des pare-feu et SSL, pour compliquer les choses) et le nœud était déjà connecté ... Donc, l'entrée que j'ai trouvée à cet égard dans datastax ne s'appliquait pas ...
Désactiver le pare-feu et SELINUX et réessayer
J'ai eu la même erreur. Il peut y avoir plus d'une solution. J'espère que mon erreur est ce que vous avez fait.
J'avais mon IP localhost pointant sur un nom de domaine (et je l'ai fait pour que le contexte de serveur de mon application Spring Boot soit un nom de domaine tel que www.example.com:8080
au lieu de localhost:8080
et j'avais l'entrée suivante dans mon fichier hosts sur le système Windows).
127.0.0.1 www.example.com
Pendant que mon fichier batch de cassandra cherchait localhost
, il ne l’avait pas trouvée. J'ai donc fait une autre entrée pour localhost dans mon fichier hosts en tant que:
127.0.0.1 localhost
127.0.0.1 www.example.com
Après l’avoir ajouté, j’ai ouvert la nouvelle commande Invite, lancé cassandra batch
à partir du répertoire cassandra bin, puis cela a fonctionné.
Dans notre cas, ssl a été activé et la configuration de cassandra.yaml est satisfaisante, comme indiqué dans les commentaires ci-dessus. Nous avons ensuite activé le débogage SSL en ajoutant ci-dessous le paramètre jvm dans cassandra-env.sh -Djavax.net.debug = ssl: poignée de main
Après avoir redémarré le noeud, nous avons remarqué ci-dessous dans le fichier journal Cassandra
MessagingService-Outgoing-geo2_Host/xx.xx.xx.xx, Exception sous en attente de la fermeture javax.net.ssl.SSLHandshakeException: Fatal reçu alerte: certificate_unknown
Après une enquête plus approfondie sur les journaux de débogage ssl, nous avons appris que le certificat n’était pas valide. Après avoir résolu ce problème, le nœud a pu rejoindre le cluster.