2015-07-07 17 views
5

Ho due domande per le quali non ho trovato alcuna soluzione popolari/ampiamente accettata:modo migliore per iniziare server di Zookeeper dal programma Java

  1. Qual è il modo più semplice per avviare il server utilizzando Zookeeper programma Java?

  2. E, è possibile aggiungere server al cluster di zookeeper senza dover accedere manualmente a ciascuna macchina e aggiornare i propri file di configurazione con id del nuovo nodo e ip: port entry?

Qualcuno può aiutare? Grazie!

risposta

0

Se si desidera avviare un nuovo processo del server ZooKeeper dal codice Java, lo si dovrebbe fare nello stesso modo in cui si avvierebbe qualsiasi altro processo esterno da Java, ad es. usando un ProcessBuilder. Non c'è nulla di speciale qui in caso di ZooKeeper. Puoi controllare i documenti ufficiali su come dovrebbe apparire il comando reale. Diventa complicato se si vuole supervisionare il processo per l'uso di produzione, quindi in tal caso sarebbe meglio usare qualcosa fornito dal sistema operativo (es. Upstart, runit, ecc ...), o dare un'occhiata all'espositore per esempi di codice : https://github.com/Netflix/exhibitor.

Se si sta chiedendo di avviare un cluster ZooKeeper dal proprio programma Java, si complicano ulteriormente le cose, dal momento che in genere è necessario supervisionare più processi JVM di ZooKeeper su host diversi. Dai anche un'occhiata all'Espositore.

Se la domanda riguarda l'avvio di un'istanza del server ZooKeeper all'interno dello stesso processo JVM del codice Java (incorporato), è anche possibile. Ci sono alcuni dettagli importanti da tenere a mente, dare un'occhiata a questa risposta: Is it possible to start a zookeeper server instance in process, say for unit tests?

Per quanto riguarda la seconda domanda, vero e proprio supporto per la riconfigurazione dinamica di cluster è stato aggiunto solo recentemente, in 3.5.0: http://zookeeper.apache.org/doc/trunk/zookeeperReconfig.html.

Prima di questo, è ancora possibile "aggiungere server al cluster di Zookeeper senza dover accedere manualmente a ciascuna macchina e aggiornare la propria configurazione", ma è necessario utilizzare uno strumento di gestione della configurazione come Chef, Puppet o simile e in questo caso si dovrebbe anche fare un riavvio del cluster per acquisire nuova configurazione.

+0

Grazie @igorbel per la risposta! Di tutte queste opzioni, ho trovato ciò che è menzionato qui: [link] (http://stackoverflow.com/questions/9286054/is-it-possible-to-start-a-zookeeper-server-instance-in-process -say-for-unit-tes) il più facile. Quindi, per ora sto usando quel metodo! –

Problemi correlati