2012-11-04 28 views
8

È possibile aggiungere dinamicamente nuovi host a un cluster Cassandra?Aggiunta dinamica di nuovi nodi in Cassandra

Quello che sto cercando di fare è impostare un programma in grado di:

  • Impostare una versione locale del database per ogni utente
  • macchina di ogni utente entrerà a far parte del cluster (la macchine saranno padroni di casa)
  • dati verranno replicati in tutti i cluster

Costruire un gruppo di più host di solito comporta configuring the cassandra.yaml per memorizzare i semi, listen_addr ess e rpc_address di ciascun host.

La mia idea è di modificare questi file tramite java e inserire i nuovi indirizzi host come richiesto, ma fare in modo che i dati siano precisi sui file cassandra.yaml di ogni utente sarebbe una sfida.

Mi chiedo se qualcuno ha fatto qualcosa di simile o ha qualche consiglio su un modo migliore per raggiungere questo obiettivo.

risposta

3

Sì è possibile. Guarda Netflix's Priam per un esempio completo di gestione dinamica del cluster cassandra (ma progettato per funzionare con Amazon EC2).

Per rpc_address e listen_address, è possibile impostare uno script di avvio che configura il cassandra.yaml se non è ok.

Per i semi è possibile configurare un provider di seme personalizzato. Guarda lo seed provider used for Netflix's Priam per alcune idee su come implementarlo

La parte più difficile sarà gestire i token assegnati a ciascun nodo in modo efficiente. Cassandra 1.2 è dietro l'angolo e includerà una funzione chiamata nodi virtuali che, IMO, funzionerà bene nel tuo caso. Vedi lo Acunu presentation about it

Problemi correlati