2012-11-09 15 views
20

Abbiamo una configurazione indipendente per lo zookeeper su una macchina di sviluppo. Funziona bene per ogni altra macchina di sviluppo eccetto questa macchina testdev.Errore di connessione dello Zooke

Otteniamo questo errore più e più volte quando si tenta di connettersi a Zookeeper attraverso TESTDEV:

2012-11-09 14:06:53,909 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Socket connection established to zk01.dev.bunchball.net/192.168.8.58:2181, initiating session 
2012-11-09 14:06:53,911 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect 
2012-11-09 14:06:55,366 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Opening socket connection to server zk01.dev.bunchball.net/192.168.8.58:2181 
2012-11-09 14:06:55,368 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Socket connection established to zk01.dev.bunchball.net/192.168.8.58:2181, initiating session 
2012-11-09 14:06:55,368 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect 
2012-11-09 14:06:57,271 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Opening socket connection to server zk01.dev.bunchball.net/192.168.8.58:2181 
2012-11-09 14:06:57,274 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Socket connection established to zk01.dev.bunchball.net/192.168.8.58:2181, initiating session 
2012-11-09 14:06:57,275 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):[email protected]] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect 

Abbiamo provato a riavviare la macchina dev di prova, e anche riavviare Zookeeper ospite, ma niente ha funzionato. Siamo totalmente confusi perché funziona perfettamente con altre macchine tranne questa. Quale potrebbe essere la causa di questo?

risposta

1

Ho avuto questo problema e ho scoperto che stavo dicendo a Zookeeper di connettersi alla porta sbagliata. Hai verificato che zookeeper sia effettivamente in esecuzione sulla porta 2181 sulla macchina di sviluppo?

12

Ho solo la stessa situazione di te e ho risolto questo problema.

È il motivo per cui è stato configurato un numero pari di zookeeper che provoca direttamente il problema , provare a modificare il numero del nodo dello zoo in uno strano.

ad esempio lo stato originale del mio gruppo guardiano dello zoo è composto da 4 nodi, poi semplicemente rimuovere uno di loro che determinano il numero di nodo per essere 3 bene, ora il suo ok per l'avvio di cluster Zookeeper

qui sotto è l'uscita del successo connettersi al server di Zookeeper

2013-04-22 22:07:05,654 [myid:] - INFO [main:[email protected]] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 [email protected] 
Welcome to ZooKeeper! 
2013-04-22 22:07:05,704 [myid:] - INFO [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) 
JLine support is enabled 
2013-04-22 22:07:05,727 [myid:] - INFO [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/127.0.0.1:2181, initiating session 
[zk: localhost:2181(CONNECTING) 0] 2013-04-22 22:07:05,846 [myid:] - INFO [main-SendThread(localhost:2181):[email protected]] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x13e3211c06e0000, negotiated timeout = 30000 
+6

* "hai configurato un numero pari di zookeepers" * - l'OP non ha detto che * "un'impostazione indipendente di un rilevatore di zoom su una macchina di sviluppo" * implicherebbe che il numero di istanze ZK sia effettivamente dispari ? –

+2

@Rugal: qualsiasi fonte valida per il ** numero dispari magico **? –

+2

@Rugal Dove devo cambiare il numero del nodo 'zookeeper'? – Kulasangar

1

ho avuto anche questo problema, e ho scoperto che ho solo bisogno di riavviare Zookeeper, quindi riavviare Tomcat così il mio webapp collegato bene quindi

1

I wa s in grado di iniziare con zookeeper e kafka con 2 nodi ciascuno. ho ottenuto l'errore perché avevo iniziato Zookeeper con ./zkServer.sh invece che l'involucro Kafka bin/zookeeper-server-start.sh config/zookeeper.properties

1

Assicurarsi che tutti i servizi richiesti siano in esecuzione

Fase 1: Controllare se HBase-master è in esecuzione

sudo /etc/init.d/hbase-master status 

se non, quindi avviarlo sudo /etc/init.d/hbase-master start

Fase 2: Controllare se HBase-regionserver è in esecuzione

sudo /etc/init.d/hbase-regionserver status 

se non, quindi avviarlo sudo /etc/init.d/hbase-regionserver start

Fase 3: Controllare se guardiano dello zoo-server è in esecuzione

sudo /etc/init.d/zookeeper-server status 

se non, quindi avviarlo sudo /etc/init.d/zookeeper-server start


o semplicemente eseguire questi 3 comandi di seguito.

dopo che non dimenticate di controllare lo stato

sudo /etc/init.d/hbase-master status 
sudo /etc/init.d/hbase-regionserver status 
sudo /etc/init.d/zookeeper-server status 

Si potrebbe scoprire che guardiano dello zoo non è ancora in esecuzione: quindi è possibile eseguire il guardiano dello zoo

sudo /usr/lib/zookeeper/bin/zkServer.sh stop 
sudo /usr/lib/zookeeper/bin/zkServer.sh start 

dopo controlla nuovamente lo stato e assicurati che sia in esecuzione

sudo /etc/init.d/zookeeper-server status 

Questo dovrebbe funzionare.

6

Ho affrontato lo stesso problema e ho scoperto che era dovuto ai nodi del cluster di zookeeper che hanno bisogno di porte aperte per comunicare tra loro.

server.1=xx.xx.xx.xx:2888:3888 

server.2=xx.xx.xx.xx:2888:3888 

server.3=xx.xx.xx.xx:2888:3888 

una volta ho consentito queste porte attraverso il gruppo di sicurezza aws e riavviato. Tutto ha funzionato bene per me

2

Nel mio caso, ho config zoo.cfg come questo:

server.1=host-1:2888:3888 
server.2=host-2:2888:3888 
server.3=host-3:2888:3888 

Ma, in host-1, I configurazione dell'host-1 determinazione a 127.0.0.1 in/etc/hosts :

127.0.0.1 localhost host-1 

che può risultare che altri host non possono comunicare con esso. Risolvi host-1 nel suo vero ip risolto questo problema.

Spero che questo possa essere d'aiuto.

1

Avvio istanza autonoma nella mia macchina e si verifica lo stesso problema. Infine, cambio da ip "127.0.0.1" a "localhost" e il problema è scomparso.

4

Ho appena risolto il problema. Sto usando CentOS 7. E il problema-maker è firewall.Using "fermata systemctl firewalld" di chiudere il tutto in ogni server può semplicemente risolvere il problem.Or è possibile utilizzare il comando come

firewall-cmd --zone=public --add-port=2181/udp --add-port=2181/tcp --permanent" to configure all three ports ,include 2181,2888,3888 in each server.And then "firewall-cmd --reload 

Infine utilizzare

zkServer.sh restart 

per riavviare i server e risolvere i problemi.

1

Ho solo la stessa situazione di te e ho risolto questo problema.

mia conf/zoo.cfg proprio come questo:

server.1=10.194.236.32:2888:3888 
server.2=10.194.236.33:2888:3888 
server.3=10.208.177.15:2888:3888 
server.4=10.210.154.23:2888:3888 
server.5=10.210.154.22:2888:3888 

poi ho impostato data/myid contenuto del file in questo modo:

1  //at host 10.194.236.32 
2  //at host 10.194.236.33 
3  //at host 10.208.177.15 
4  //at host 10.210.154.23 
5  //at host 10.210.154.22 

infine riavviare Zookeeper

0

controllare i registri Zookeeper (/ var/log/Zookeeper). Sembra che sia stata stabilita una connessione, il che dovrebbe significare che c'è una registrazione di esso.

Ho avuto la stessa situazione ed era perché un processo ha aperto le connessioni e non è riuscito a chiuderle. Questo alla fine ha superato il limite di connessione per-host e miei ceppi sono stati traboccante di

2016-08-03 15:21:13,201 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Too many connections from /172.31.38.64 - max is 50 

Supponendo guardiano dello zoo è la solita porta, si potrebbe fare un assegno per quella con:

lsof -i -P | grep 2181 
0

ho incontrato lo stesso problema ,pure. Nel mio caso il problema riguarda le regole di iptables.

Per comunicare con il nodo zookeeper, la porta 2181 deve accettare la richiesta in entrata, anche per la comunicazione interna tra i nodi dello zookeeper le porte 2888,3888 devono essere aperte per la richiesta in entrata.

iptables -t nat -I PREROUTING -p tcp -s 10.0.0.0/24 --dport 2181 -j DNAT --to-destination serverIp:2181 
iptables -t nat -I PREROUTING -p udp -s 10.0.0.0/24 --dport 2181 -j DNAT --to-destination serverIp:2181 

iptables -t nat -I PREROUTING -p tcp -s 10.0.0.0/24 --dport 2888 -j DNAT --to-destination serverIp:2888 
iptables -t nat -I PREROUTING -p udp -s 10.0.0.0/24 --dport 2888 -j DNAT --to-destination serverIp:2888 

iptables -t nat -I PREROUTING -p tcp -s 10.0.0.0/24 --dport 3888 -j DNAT --to-destination serverIp:3888 
iptables -t nat -I PREROUTING -p udp -s 10.0.0.0/24 --dport 3888 -j DNAT --to-destination serverIp:3888 

sudo service iptables save 
-1

Proprio ora ho risolto la stessa domanda e postare un blog.

In breve, se xx di zoo.cfg piace:

server.1=xx:2888:3888 
server.2=yy:2888:3888 
server.3=zz:2888:3888 

poi myid xx = 1 è d'obbligo

0

Ciò può accadere se ci sono troppe connessioni aperte.

Provare ad aumentare l'impostazione maxClientCnxns.

Da documentation:

maxClientCnxns (No proprietà di sistema Java)

Limita il numero di connessioni simultanee (a livello di socket) che un singolo cliente, identificato in base all'indirizzo IP, può far un singolo membro del gruppo ZooKeeper. Questo è usato per prevenire determinate classi di attacchi DoS, incluso l'esaurimento del descrittore di file. Impostando questo a 0 o omettendo completamente rimuove il limite sulle connessioni simultanee.

È possibile modificare le impostazioni nel file di configurazione. Molto probabilmente si può trovare a /etc/zookeeper/conf/zoo.cfg.

Nelle versioni moderne di ZooKeeper il valore predefinito è 60. È possibile aumentarlo aggiungendo la riga maxClientCnxns=4096 alla fine del file di configurazione.

0

Questo è un problema comune se il server Zookeeper non è in esecuzione o non è più in esecuzione (cioè si è bloccato dopo l'avvio).

Quindi, per prima cosa, verificare di avere il server Zookeeper in esecuzione. Un modo semplice per controllare è grep i processi in esecuzione:

# ps -ef | grep zookeeper 

(gestiscono questo un paio di volte per vedere se lo stesso ID di processo è ancora lì la sua possibile, mantenere il riavvio con un nuovo ID di processo..In alternativa si può usare 'stato guardiano dello zoo systemctl' se la vostra Linux supporto distro systemd)

Si dovrebbe vedere il processo in esecuzione come un processo java:

# ps -ef | grep zookeeper 
root  492  0 0 00:01 pts/1 00:00:00 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /root/zookeeper-3.5.0-alpha/bin/../build/classes:/root/zookeeper-3.5.0-alpha/bin/../build/lib/*.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/slf4j-log4j12-1.7.5.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/slf4j-api-1.7.5.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/servlet-api-2.5-20081211.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/netty-3.7.0.Final.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/log4j-1.2.16.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jline-2.11.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jetty-util-6.1.26.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jetty-6.1.26.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/javacc.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jackson-mapper-asl-1.9.11.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jackson-core-asl-1.9.11.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/commons-cli-1.2.jar:/root/zookeeper-3.5.0-alpha/bin/../zookeeper-3.5.0-alpha.jar:/root/zookeeper-3.5.0-alpha/bin/../src/java/lib/*.jar:/root/zookeeper-3.5.0-alpha/bin/../conf: -Xmx1000m -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /root/zookeeper-3.5.0-alpha/bin/../conf/zoo.cfg 

Se proprio non c'è, allora c'è probabilmente qualcosa nella Zookeeper file di registro che indica il problema.

Per trovare il file di registro zookeeper, è necessario prima capire dove è configurato per la registrazione. Nel mio caso ho guardiano dello zoo installato sotto la mia directory principale (non suggerendo l'installazione di lì):

[[email protected]_zookeeper conf]# pwd 
/root/zookeeper-3.5.0-alpha/conf 

E si può trovare l'impostazione in questo file di registro:

[[email protected]_zookeeper conf]# grep "zookeeper.log" log4j.properties 
zookeeper.log.dir=/var/log 
zookeeper.log.file=zookeeper.log 
zookeeper.log.threshold=INFO 
zookeeper.log.maxfilesize=256MB 
zookeeper.log.maxbackupindex=20 

Così Zookeeper è configurato per accedere sotto/var/log.

Quindi di solito c'è un file zookeeper.log e/o zookeeper.out che dovrebbe indicare il tuo errore di avvio.

0

Ha avuto lo stesso errore durante l'installazione su un cluster a 2 nodi. Ho scoperto di aver confuso il contenuto del file myid rispetto a server.id = HOST_IP: port entry.

In sostanza, se si dispone di due server (server1 e server2) per cui sono stati creati i file "MyID" in DATADIR per zookeeper, come di seguito

SERVER1 (myid) 
1 

SERVER2 (myid) 
2 

garantire l'entrata nel file zoo.cfg corrisponde per ogni di questi cioè server.1 dovrebbe usare SERVER1 hostname e server.2 dovrebbe usare SERVER2 hostname seguito dalla porta come di seguito

SERVER1 (zoo.cfg) 
... (other config omitted) 
server.1=SERVER1:2888:3888 
server.2=SERVER2:2888:3888 

SERVER2 (zoo.cfg) 
... (other config omitted) 
server.1=SERVER1:2888:3888 
server.2=SERVER2:2888:3888 

solo per assicurarsi che, ho anche cancellato la Versione * cartella nella datadir riavviato Zookeeper per farlo funzionare.

Problemi correlati