2015-03-28 15 views
5

Sono nuovo di zookeeper e aws EC2. Sto cercando di installare zookeeper su 3 istanze ec2.installazione di guardiani su più istanze di AWS EC2

secondo zookeeper document, ho installato Zookeeper su tutti e 3 i casi, creato zoo.conf e aggiungere sotto configurazione:

tickTime=2000 
initLimit=10 
syncLimit=5 
dataDir=/opt/zookeeper/data 
clientPort=2181 
server.1=localhost:2888:3888 
server.2=<public ip of ec2 instance 2>:2889:3889 
server.3=<public ip of ec2 instance 3>:2890:3890 

lima myid anche ho creato su tutti e 3 i casi come /opt/zookeeper/data/myid come da linee guida. .

ho paio di domande, come di seguito:

  1. ogni volta che sto iniziando Zookeeper serv su ogni istanza, si avvierà in modalità standalone. (come da registri)

  2. è possibile connettersi tra loro in seguito? porta 2889: 3889 & 2890: 38900 - di cosa porta tutto questo. posso aver bisogno di configurarlo su macchina ec2 o ho bisogno di dare qualche altra porta contro di esso?

  3. È necessario creare un gruppo di sicurezza per aprire queste connessioni? Non sono sicuro di come farlo in istanza ec2.

  4. Come confermare che tutti e 3 i guardiani sono stati avviati e possono comunicare tra loro?

risposta

10

La configurazione di ZooKeeper è progettata in modo tale da poter installare lo stesso identico file di configurazione su tutti i server del cluster senza modifiche. Questo rende le operazioni un po 'più semplici. Il componente che specifica la configurazione per il nodo locale è il file myid.

La configurazione che hai definito è non una che può essere condivisa su tutti i server. Tutti i server nell'elenco dei server devono essere vincolanti per un indirizzo IP privato accessibile ad altri nodi nella rete. Stai vedendo il tuo server avviare in modalità standalone perché sei impegnato a localhost. Quindi, il problema è che gli altri server nel cluster non possono vedere localhost.

La configurazione dovrebbe apparire più simile a:

tickTime=2000 
initLimit=10 
syncLimit=5 
dataDir=/opt/zookeeper/data 
clientPort=2181 
server.1=<private ip of ec2 instance 1>:2888:3888 
server.2=<private ip of ec2 instance 2>:2888:3888 
server.3=<private ip of ec2 instance 3>:2888:3888 

Le due porte elencate in ogni definizione di server sono rispettivamente i quorum e elettorali porte utilizzate dai nodi Zookeeper per comunicare tra loro internamente. Di solito non è necessario modificare queste porte e si dovrebbe cercare di mantenerle uguali tra i server per coerenza.

Inoltre, come ho detto dovresti essere in grado di condividere lo stesso identico file di configurazione in tutte le istanze. L'unica cosa che dovrebbe cambiare è il file myid.

Probabilmente sarà necessario creare un gruppo di sicurezza e aprire la porta client per essere disponibili per i client e le porte di quorum/elezione per essere accessibili da altri server ZooKeeper.

Infine, si potrebbe voler esaminare un'interfaccia utente per aiutare a gestire il cluster.Netflix makes a decent UI che ti fornirà una vista del tuo cluster e aiuterà anche a ripulire vecchi log e memorizzare snapshot su S3 (ZooKeeper prende istantanee ma non cancella i vecchi log delle transazioni, quindi il tuo disco si riempirà se non vengono rimossi correttamente) . Ma una volta configurato correttamente, dovresti essere in grado di vedere anche i server ZooKeeper che si connettono tra loro nei registri.

EDIT

@czerasz nota che a partire dalla versione 3.4.0 è possibile utilizzare le direttive autopurge.snapRetainCount e autopurge.purgeInterval per mantenere i vostri scatti puliti.

@chomp osserva che alcuni utenti hanno dovuto utilizzare 0.0.0.0 per l'IP del server locale per far funzionare la configurazione di ZooKeeper su EC2. In altre parole, sostituire <private ip of ec2 instance 1> con 0.0.0.0 nel file di configurazione su instance 1. Ciò è contrario al modo in cui i file di configurazione di ZooKeeper sono progettati, ma potrebbero essere necessari su EC2.

+1

A partire dalla versione '3.4.0' è possibile utilizzare le direttive' autopurge.snapRetainCount' e 'autopurge.purgeInterval' per mantenere pulite le istantanee. – czerasz

+0

Invece di inserire l'IP privato della macchina, nel file zoo.cfg dell'istanza 1 (ad esempio), dovrebbe essere "0.0.0.0". – chomp

+0

@chomp stai dicendo che se questo fosse il file di configurazione per 'server.1' potresti inserire' 0.0.0.0' per quella specifica voce nel file? I file di configurazione di ZooKeeper sono progettati in modo che possano essere duplicati su macchine senza essere modificati, motivo per cui il file 'myid' è separato. Non possiamo inserire '0.0.0.0' come l'IP di tutti i server poiché non è possibile fare riferimento a un server remoto in questo modo. Pertanto, il file di configurazione dovrebbe avere IP reali. – kuujo

Problemi correlati