Dynamisches Ändern eines Cassandra-Clusters mit einem Knoten in einen mit zwei Knoten

Dynamisches Ändern eines Cassandra-Clusters mit einem Knoten in einen mit zwei Knoten

Ich habe also eine Anwendung, die die meiste Zeit sehr inaktiv ist, aber an einigen Tagen im Monat eine hohe Auslastung benötigt. Da wir auf EC2 bereitstellen, möchte ich die meiste Zeit nur einen Cassandra-Server aktiv halten und an Tagen mit hoher Auslastung einen weiteren Server (mit mehr RAM und CPU als der erste) hochfahren, um die Last zu bewältigen. Wie geht das am besten? Sollte ich einen anderen Ansatz wählen?

Einige Anmerkungen zu meinen Plänen:

  • Bringen Sie den Knoten zum Laufen und reparieren Sie ihn sofort
  • Nach Ablauf der Burst-Zeit den leistungsstarken Knoten außer Betrieb setzen
  • Verwenden Sie den Always-On-Server als Seed-Knoten.

Meine Hauptfrage ist, wie ich die Knoten dazu bringe, alle Daten gemeinsam zu nutzen, da ich einen Replikationsfaktor von 2 möchte (damit beide Knoten alle Daten haben), aber das funktioniert nicht, wenn nur ein Server vorhanden ist. Soll ich 2 zusätzliche Server statt nur einem einrichten?

Antwort1

Es scheint, dass man ganz einfachÄndern Sie den Replikationsfaktor.

Dies wird auch erwähnt auf derCassandra-Wiki, wo Sie Anweisungen zum Erhöhen und Verringern des Replikationsfaktors finden.

Dies bedeutet, dass Folgendes möglich sein sollte:

  • Replikationsfaktor von 1 auf 2 ändern
  • Reparieren Sie Ihren Burst-Knoten, damit er eine Kopie aller Daten erhält.
  • ... arbeite ...
  • Außerbetriebnahme-Burst-Knoten
  • den Replikationsfaktor von 2 auf 1 zurücksetzen
  • Bereinigung ausführen

Antwort2

Meiner Erfahrung nach funktioniert das Ändern des Replikationsfaktors im laufenden Betrieb nicht so gut :-( Es kann zu Schemaabweichungen kommen, deren Behebung, zumindest bei mir, zeitaufwändig ist.

Ich denke nur laut nach, aber ein anderer möglicher Weg könnte sein (ändern Sie die Zeitangaben entsprechend):

  1. Erhöhen Sie die GC-Gnadenfrist in cassandra.yaml (dies bestimmt, wie lange Tombstones bestehen bleiben, bevor sie von der Festplatte gelöscht werden) auf beispielsweise 30 Tage.
  2. Starten Sie etwa alle 15 Tage einen zweiten Knoten, unabhängig davon, ob dies erforderlich ist oder nicht. Stellen Sie sicher, dass die Daten/Commit-Protokolle usw. zwischen den Läufen erhalten bleiben. So können Sie schneller loslegen, wenn Sie den zweiten Knoten starten müssen.
  3. mit mehr RAM und CPU als das erste

Cassandra teilt die Arbeitslast effektiv durch die Größe des Rings auf, für den jeder Knoten verantwortlich ist. Es könnte einfacher sein, wenn der zweite Knoten entweder die doppelte Kapazität des ersten hat oder zwei Knoten der gleichen Größe wie der erste hinzufügt, um den Ring einfacher aufzuteilen.

Dies erfordert jedoch beim Löschen der Knoten weiterhin einen manuellen Eingriff des Nodetools, da die angedeuteten Übergaben die Festplatte des verbleibenden Knotens unnötig füllen.

verwandte Informationen