2012-11-04 16 views
8

Ist es möglich, neue Hosts dynamisch zu einem Cassandra-Cluster hinzuzufügen?Dynamisches Hinzufügen neuer Knoten in Cassandra

Was ich versuche, ein Programm ins Leben gerufen zu tun ist, das kann:

  • eine lokale Version der Datenbank für jeden
  • Maschinen jeden Benutzers des Benutzer einrichten wird Teil des Clusters werden (die Maschinen Gastgeber sein wird)
  • die Daten werden über alle Cluster

Aufbau eines Clusters von mehreren Hosts in der Regel configuring the cassandra.yaml die Samen zu speichern bringt repliziert werden, listen_addr ess und rpc_address jedes Hosts.

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

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

Antwort

3

Ja ist möglich. Unter Netflix's Priam finden Sie ein vollständiges Beispiel für eine dynamische Cassandra-Clusterverwaltung (die jedoch für die Zusammenarbeit mit Amazon EC2 entwickelt wurde).

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

Für Seeds können Sie einen benutzerdefinierten Seed-Provider konfigurieren. Betrachten Sie die seed provider used for Netflix's Priam für einige Ideen, wie man es einführt

Der schwierigste Teil wird die Tokens verwalten, die jedem Knoten in einer effizienten Weise zugewiesen werden. 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. Siehe Acunu presentation about it

Verwandte Themen