2016-06-23 13 views
0

Anwendungsentwickler in meinem Team arbeitet an einem App-Builder zum Herstellen einer Verbindung zu cassandra, in der Eigenschaftendatei habe ich gesehen, dass er nur einen Kontakt verwendet Punkt, ich habe ihn gebeten, alle Samen Knoten als Kontaktpunkte enthält und verändern die Replikation von simplestrategy zu NetworkTopologystrategy und Code wie folgt aussiehtwenn versucht, mehr als einen Kontaktpunkt für APP Builder zu geben, um Verbindung zu Cassandra sehen ERROR

cassandra.contactPoint=52.xxx.xx.xxx,52.xxx.xx.xxx,10.xxx.xx.xxx,10.xxx.xx.xxx 
cassandra.replicationFactor={ 'class' : 'NetworkTopologyStrategy', 'DC1' :'3' , 'DC2' : '3'} 
cassandra.dataCenter=DC1 
cassandra.createKeyspace=false 

Dann haben wir die folgenden Fehler

Invocation der init-Methode gesehen gescheitert; verschachtelte Ausnahme ist java.lang.IllegalArgumentException: 52.xxx.xx.123,52.xxx.xx.125,10.xxx.xx.xxx, 10.xxx.xx.xxx com.datastax.driver.core. Cluster $ Builder.addContactPoint (Cluster.java:749)

Also fragte ich ihn in DC1 vorliegenden Saatknoten enthalten dann neu gestartet wir und sahen diesen Fehler

Session eRROR - Fehler beim Erstellen des Pools/52.xxx.xx.125: 9042 verursacht von: java.net.ConnectException: Connection refused: /52.xxx.xx.125:9042

Ich habe einige Fragen zu diesem

  1. Was cassandra.datacenter() macht? Müssen wir Kontaktpunkte angeben, die in diesem bestimmten DC vorhanden sind? Wenn ja, was sollte ich hinzufügen, wenn ich meine Startknoten mit beiden DCs einbeziehen muss?

  2. Auch nach der Angabe von Knoten, die zu dieser bestimmten DC gehören, haben wir Fehler bekommen. Liegt das an dem von uns erwähnten Replikationsfaktor? Ist die Syntax korrekt?

Antwort

0

Die Verbindung zum Cluster hat nichts mit dem Replikationsfaktor zu tun. Wenn Sie eine Verbindung zu einem Cluster herstellen, möchten Sie normalerweise genügend Knoten-IP-Adressen angeben, sodass Sie sicher sind, dass mindestens eine davon aktiv ist, wenn Ihre Anwendung versucht, eine Verbindung herzustellen. In Bezug auf Seed-Knoten besteht die Daumenregel darin, einen Seed-Knoten pro 3 Knoten im Cluster zu haben (dies ändert sich basierend auf der Bereitstellung, aber nicht zu viel). Als erste Ausnahme stellen Sie sicher, dass Sie der Treibermethode addContactPoints einen Knotenlistenparameter zur Verfügung stellen, der eine Liste von Zeichenfolgen akzeptiert. Der zweite Fehler sieht so aus, als ob der angegebene Port geschlossen ist oder Sie einen anderen Port in cassandra.yaml definiert haben. Drivers ruft die Topologie des Clusters ab, wenn Sie eine Verbindung zum ersten Knoten herstellen, damit diese Liste nicht definiert, mit welchem ​​Datacenter sie sich verbindet. Die Datencenter-Isolation wird mit Konsistenzlevels in Anweisung erzwungen.