Dynamisch neue Knoten in Cassandra hinzufügen

8

Ist es möglich, einem Cassandra-Cluster dynamisch neue Hosts hinzuzufügen?

Was ich versuche, ist ein Programm zu erstellen, das:

  • Richten Sie für jeden Benutzer eine lokale Version der Datenbank ein
  • Die Maschine jedes Benutzers wird Teil des Clusters (die Maschinen sind Hosts)
  • Daten werden über alle Cluster hinweg repliziert

Das Erstellen eines Clusters mit mehreren Hosts erfordert normalerweise das Konfigurieren von cassandra.yaml zum Speichern der Seeds, listen_address und rpc_address jedes Hosts.

Meine Idee ist es, diese Dateien über Java zu bearbeiten und die neuen Host-Adressen wie erforderlich einzufügen, aber sicherzustellen, dass die Daten in den cassandra.yaml-Dateien jedes Benutzers korrekt sind.

Ich frage mich, ob jemand etwas Ähnliches getan hat oder einen Rat für einen besseren Weg hat, dies zu erreichen.

    
Lyuben Todorov 04.11.2012, 14:09
quelle

1 Antwort

3

Ja ist möglich. In Netflix's Priam finden Sie ein komplettes Beispiel für ein dynamisches Cassandra-Cluster-Management (das jedoch für die Zusammenarbeit mit Amazon EC2 entwickelt wurde). p>

Für rpc_address und listen_address können Sie ein Startskript einrichten, das cassandra.yaml konfiguriert, wenn es nicht in Ordnung ist.

Für Seeds können Sie einen benutzerdefinierten Seed-Provider konfigurieren. Sehen Sie sich die Seed Provider für Netflix's Priam verwendet für einige Ideen, wie man es implementiert

Der schwierigste Teil wird darin bestehen, die jedem Knoten zugewiesenen Token auf effiziente Weise zu verwalten. Cassandra 1.2 ist um die Ecke und wird eine Funktion enthalten, die virtuelle Knoten genannt wird, die, IMO, in Ihrem Fall gut funktionieren werden. Sehen Sie die Präsentation von Acunu darüber

    
lstern 07.11.2012, 13:23
quelle

Tags und Links