java amazon-web-services apache-zookeeper

java - Error de Zookeeper: No se puede abrir el canal a X en la dirección de elección



amazon-web-services apache-zookeeper (7)

¿Cómo se ha definido la ip del servidor local en cada nodo? Si le ha dado la ip pública, entonces el oyente no se hubiera podido conectar al puerto. Debe especificar 0.0.0.0 para el nodo actual

server.1=0.0.0.0:2888:3888 server.2=192.168.10.10:2888:3888 server.3=192.168.2.1:2888:3888

Este cambio debe realizarse en los otros nodos también.

He instalado zookeeper en 3 servidores aws diferentes. La siguiente es la configuración en todos los servidores.

tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/zookeeper clientPort=2181 server.1=x.x.x.x:2888:3888 server.2=x.x.x.x:2888:3888 server.3=x.x.x.x:2888:3888

Las tres instancias tienen un archivo myid en var/zookeeper con el id. myid . Los tres servidores tienen todos los puertos abiertos desde la consola aws. Pero cuando ejecuto el servidor zookeeper, recibo el siguiente error en todas las instancias.

2015-06-19 12:09:22,989 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382] - Cannot open channel to 2 at election address /x.x.x.x:3888 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:402) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:840) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:762) 2015-06-19 12:09:23,170 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382] - Cannot open channel to 3 at election address /x.x.x.x:3888 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:402) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:840) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:762) 2015-06-19 12:09:23,170 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@849] - Notification time out: 25600


Aquí hay información de la plantilla ansible jinja2 para automatizar la construcción de un clúster con el nombre de host 0.0.0.0 en zoo.cfg

{% for url in zookeeper_hosts_list %} {%- set url_host = url.split('':'')[0] -%} {%- if url_host == ansible_fqdn or url_host in ansible_all_ipv4_addresses -%} server.{{loop.index0}}=0.0.0.0:2888:3888 {% else %} server.{{loop.index0}}={{url_host}}:2888:3888 {% endif %} {% endfor %}


En mycase, el problema era que tenía que iniciar los tres servidores de zookeeper, solo así pude conectarme al servidor de zookeeper utilizando ./zkCli.sh


Esto es lo que funcionó para mí.

Step 1: Node 1: zoo.cfg server.1= 0.0.0.0:<port>:<port2> server.2= <IP>:<port>:<port2> . . . server.n= <IP>:<port>:<port2> Node 2 : server.1= <IP>:<port>:<port2> server.2= 0.0.0.0:<port>:<port2> . . . server.n= <IP>:<port>:<port2> Now in location defined by datadir on your zoo.cfg Node 1: echo 1 > <datadir>/id Node 2: echo 2 > <datadir>/id . . . Node n: echo n > <datadir>/id

Este me ayudó a comenzar con éxito al guardián del zoológico, pero sabré más una vez que comience a jugar con él. Espero que esto ayude.


Me encontré con la pregunta guardar y la resolví.

asegúrese de que el myid es el guardar con su configuración en el zoo.cfg.

por favor revise su archivo zoo.cfg en su directorio conf , que contiene dicho contenido.

server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888

y verifique el myid en el directorio dataDir de su servidor. Por ejemplo:

Digamos que el dataDir definido en el zoo.cfg es ''/home/admin/data''

luego, en zookeeper1, debe tener un archivo llamado myid y tener el valor 1 en este archivo; en zookeeper2, debe tener un archivo llamado myid y tener el valor 2 en este archivo; en zookeeper3, debe tener un archivo llamado myid y tener un valor 3 en este archivo.

Si no se configura de esta manera, el servidor escuchará en un puerto ip: incorrecto.


Si su propio nombre de host se resuelve a 127.0.0.1 (En mi caso, el nombre de host estaba en / etc / hosts), zookeeper no se iniciará sin tener 0.0.0.0 en el archivo zoo.cfg, pero si su nombre de host se resuelve en la real IP de la máquina, puede poner su propio nombre de host en el archivo de configuración.


Tenía problemas similares en un conjunto de cuidadores de 3 nodos. La solución fue según lo aconsejado por espeirasbora y reiniciado.

Así que esto fue lo que hice

zookeeper1, zookeeper2 y zookeeper3

A. Problema : no se pudo iniciar znodes en mi conjunto

B. System SetUp :: 3 Znodes en tres 3 máquinas

C. Error ::

En mi archivo de registro de zookeper pude ver los siguientes errores

2016-06-26 14:10:17,484 [myid:1] - WARN [SyncThread:1:FileTxnLog@334] - fsync-ing the write ahead log in SyncThread:1 took 1340ms which will adversely effect operation latency. See the ZooKeeper troubleshooting guide 2016-06-26 14:10:17,847 [myid:1] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@810] - Connection broken for id 2, my id = 1, error = java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker.run(QuorumCnxManager.java:795) 2016-06-26 14:10:17,848 [myid:1] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@813] - Interrupting SendWorker 2016-06-26 14:10:17,849 [myid:1] - WARN [SendWorker:2:QuorumCnxManager$SendWorker@727] - Interrupted while waiting for message on queue java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088) at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:418) at org.apache.zookeeper.server.quorum.QuorumCnxManager.pollSendQueue(QuorumCnxManager.java:879) at org.apache.zookeeper.server.quorum.QuorumCnxManager.access$500(QuorumCnxManager.java:65) at org.apache.zookeeper.server.quorum.QuorumCnxManager$SendWorker.run(QuorumCnxManager.java:715) 2016-06-26 14:10:17,851 [myid:1] - WARN [SendWorker:2:QuorumCnxManager$SendWorker@736] - Send worker leaving thread 2016-06-26 14:10:17,852 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@89] - Exception when following the leader java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63) at org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:83) at org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:99) at org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:153) at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:846) 2016-06-26 14:10:17,854 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@166] - shutdown called java.lang.Exception: shutdown Follower

D. Acciones y resolución ::

En cada znodo a. Modifiqué el archivo de configuración $ ZOOKEEPER_HOME / conf / zoo.cfg para configurar la IP de la máquina a "0.0.0.0" mientras mantenía la dirección IP de los otros 2 znodos. segundo. reinició el znode c. Revisé el estado d.Voila, estaba bien.

Vea abajo

-------------------------------------------------

en Zookeeper1

#Before modification [zookeeper1]$ tail -3 $ZOOKEEPER_HOME/conf/zoo.cfg server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 #After modification [zookeeper1]$ tail -3 $ZOOKEEPER_HOME/conf/zoo.cfg server.1=0.0.0.0:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 #Start the Zookeper (Stop and STart or restart ) [zookeeper1]$ $ZOOKEEPER_HOME/bin/zkServer.sh start ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 52128 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: follower [zookeeper1]$ $ZOOKEEPER_HOME/bin/zkServer.sh status ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 52128 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: follower

-------------------------------------------------- -------

en Zookeeper2

#Before modification [zookeeper2]$ tail -3 $ZOOKEEPER_HOME/conf/zoo.cfg server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 #After modification [zookeeper2]$ tail -3 $ZOOKEEPER_HOME/conf/zoo.cfg server.1=zookeeper1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zookeeper3:2888:3888 #Start the Zookeper (Stop and STart or restart ) [zookeeper2]$ $ZOOKEEPER_HOME/bin/zkServer.sh start ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 52128 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: follower [zookeeper2]$ $ZOOKEEPER_HOME/bin/zkServer.sh status ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 52128 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: follower

-------------------------------------------------- -------

en Zookeeper3

#Before modification [zookeeper3]$ tail -3 $ZOOKEEPER_HOME/conf/zoo.cfg server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 #After modification [zookeeper3]$ tail -3 $ZOOKEEPER_HOME/conf/zoo.cfg server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=0.0.0.0:2888:3888 #Start the Zookeper (Stop and STart or restart ) [zookeeper3]$ $ZOOKEEPER_HOME/bin/zkServer.sh start ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 52128 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: follower [zookeeper3]$ $ZOOKEEPER_HOME/bin/zkServer.sh status ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 52128 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: follower