Um einen Knoten aus dem 2-Knoten-Cluster in AWS zu entfernen, habe ich
ausgeführt nodetool removenode <Host ID>
Danach sollte ich meinen Cluster zurückbekommen, wenn ich alle cassandra.yaml
und cassandra-rackdc.properties
richtig gesetzt habe.
Ich habe es getan, aber ich bin immer noch nicht in der Lage, mein Cluster zurück zu bekommen.
nodetool status
zeigt nur einen Knoten an.
signifikante system.log auf Cassandra ist:
%Vor%Inhalt der Dateien:
cassandra.yaml : Ссылка
cassandrackdc.properties : Ссылка
system.log : Ссылка
netstat -atun Ссылка
Beide Knoten haben dasselbe Fehlerprotokoll.
Alle erforderlichen Ports sind offen.
Irgendwelche Vorschläge?
In der Regel empfiehlt es sich, einen Seed-Knoten pro Domänencontroller zu verwenden , wenn in Ihrem Datencenter nur zwei Knoten verfügbar sind. Sie sollten in diesem Fall nicht jeden Knoten zu einem Seed-Knoten machen.
Ich habe festgestellt, dass node1 - seeds: "node1,node2"
und node2 - seeds: "node2,node1"
in Ihrer Konfiguration hat. Ein Knoten wird standardmäßig gestartet, ohne irgendwelche anderen Seeds zu kontaktieren, wenn er seine IP-Adresse als erstes Element im Abschnitt - seeds: ...
in der Konfigurationsdatei cassandra.yml
finden kann. Das können Sie auch in Ihren Protokollen finden:
... Unable to gossip with any seeds but continuing since node is in its own seed list ...
Ich vermute, dass in Ihrem Fall node1 und node2 starten, ohne sich gegenseitig zu kontaktieren, da sie sich als Seed-Knoten identifizieren.
Verwenden Sie in der Konfiguration der beiden Instanzen nur den Knoten1 für den Startknoten, und starten Sie den Cluster neu.
Wenn Knoten1 nicht aktiv ist und Knoten2 aktiv ist, müssen Sie den Abschnitt - seeds: ...
in der Konfiguration von Knoten1 so ändern, dass er nur auf die IP-Adresse von Knoten2 zeigt und nur Knoten1 bootet.
Wenn Ihre Knoten aufgrund einer falschen Konfiguration der Firewall nicht gefunden werden können, ist es normalerweise ein guter Ansatz, um zu überprüfen, ob ein bestimmter Port von einem anderen Standort aus zugänglich ist. Z.B. Sie können nc
verwenden, um zu überprüfen, ob ein bestimmter Port geöffnet ist:
Siehe die Liste der Ports, die Cassandra unter folgendem Link verwendet Ссылка
Siehe auch eine ausführliche Dokumentation zum Ausführen mehrerer Knoten mit vielen Beispielbefehlen: Ссылка
Dies ist für zukünftige Referenz. Mein Problem wurde nur durch das Öffnen von 7000-Port für dieselbe Sicherheitsgruppe in AWS gelöst. Obwohl es offen war, war die Sicherheitsgruppe etwas anderes. Als ich lief:
%Vor%Ich habe erfahren, dass das Problem von der Sicherheitsgruppe sein könnte. Und so ist es gelöst worden.
Über Seeds verwende ich IP von beiden Knoten, wie folgt:
%Vor%Es ist auf beiden Knoten gleich.
Tags und Links amazon-ec2 cassandra nodetool