Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Síntoma
No se puede iniciar el proceso de ZooKeeper.
Mensajes de error
Cuando intentas iniciar el proceso de ZooKeeper, se devuelve el siguiente mensaje de error. que indica que no se pudo iniciar ZooKeeper:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Causas posibles
En la siguiente tabla, se enumeran las posibles causas de este problema:
Causa | Para |
---|---|
Miid de ZooKeeper mal configurado | Usuarios de la nube privada perimetral |
Puerto ZooKeeper en uso | Usuarios de la nube privada perimetral |
ID de proceso incorrecto en el archivo apigee-zookeeper.pid | Usuarios de la nube privada perimetral |
Fracaso de las elecciones de líderes de ZooKeeper | Usuarios de la nube privada perimetral |
Haz clic en un vínculo de la tabla para ver las posibles soluciones de esa causa.
Miid de ZooKeeper mal configurado
Las siguientes secciones proporcionan una descripción general del archivo myid y describen cómo diagnosticar e resolver los problemas de configuración incorrecta.
Descripción general del archivo myid
En cada nodo de ZooKeeper, hay dos archivos:
- El archivo
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
, que contiene una lista de Las IP para todos los nodos de ZooKeeper en el clúster.Por ejemplo, si
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
contiene el elemento Las IP de 3 nodos de ZooKeeper forman parte del clúster de la siguiente manera:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- El archivo
/opt/apigee/data/apigee-zookeeper/data/myid
contiene una sola línea de texto que corresponde al número del servidor de ese nodo de ZooKeeper en particular. El myid de el servidor 1 contendrá el texto "1" y nada más. El ID debe ser único dentro del ensamble y debe tener un valor entre 1 y 255.Por ejemplo, en el servidor ZooKeeper.1, El archivo
/opt/apigee/data/apigee-zookeeper/data/myid
solo debe contener el texto 1 como se muestra a continuación:$ cat myid 1
Diagnóstico
- Comprueba el registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
de ZooKeeper para errores. - Si ves un mensaje de advertencia similar a “No se pudo establecer la conexión para el número de ID, mi ID es el número de ID”,
como se muestra en la siguiente imagen, la posible causa de este problema podría ser que el servidor (#)
en el archivo myid está mal configurado o está dañado.
[myid:2] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@762] - Connection broken for id 2, my id = 2, error = java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:375) at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker. run(QuorumCnxManager.java:747)
- Revisa el archivo
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
y toma nota server.# para el nodo de ZooKeeper actual. - Revisa el archivo
/opt/apigee/data/apigee-zookeeper/data/myid
y comprueba si el texto de este archivo coincida con el servidor.# que se indica en el paso 2. - Si hay una discrepancia, entonces identificaste la causa por la que ZooKeeper no pudo comenzar.
Solución
Si el archivo myid está configurado de forma incorrecta, modifíquelo y reemplace el valor por texto correcto que representa el parámetro server.# en zoológico.cfg.
Puerto de ZooKeeper en uso
Diagnóstico
- Comprobar el registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
de ZooKeeper para errores. - Si ves la excepción
java.net.BindException: Address already in use
mientras se vincula al puerto #2181, como se muestra en la siguiente figura, indica que ZooKeeper el puerto 2181 está siendo utilizado por otro proceso. Por lo tanto, no se pudo iniciar ZooKeeper.2017-04-26 07:00:10,420 [myid:3] - INFO [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2181 2017-04-26 07:00:10,421 [myid:3] - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67) at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:95) at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:111) at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
- Utiliza el siguiente comando netstat para confirmar que el puerto 2181 de ZooKeeper se está utilizando
por otro proceso:
netstat -an | grep 2181
Solución
Si el puerto 2181 de ZooKeeper sigue en uso, sigue estos pasos para solucionar esto: problema:
- Usa el comando
netstat
para encontrar el proceso que se retiene en el puerto 2181. Elimina el proceso que está utilizando el puerto 2181 de ZooKeeper:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Borra archivos PID y de bloqueo si los hay:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Reinicia ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ID de proceso incorrecto en el archivo apigee-zookeeper.pid
Cuando intentes detener o reiniciar ZooKeeper, es posible que falle debido a
El archivo apigee-zookeeper.pid
contiene un pid anterior o incorrecto, y no el del valor actual
ejecutando el proceso de ZooKeeper. Esto puede suceder si el proceso de ZooKeeper finaliza de forma inesperada o
de forma abrupta por algún motivo y no se borró el archivo apigee-zookeeper.pid
.
Diagnóstico
- Obtén el ID del proceso de ZooKeeper en ejecución actualmente ejecutando la
Comando
ps
:ps -ef | grep zookeeper
- Verifica si el archivo
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
existe. Si existe, anota el ID del proceso escrito en este archivo. - Compara los ID de proceso de los pasos 1 y 2. Si son diferentes, entonces la causa
para este problema es tener un ID de proceso incorrecto en
apigee-zookeeper.pid file.
Solución
- Edita el archivo apigee-zookeeper.pid y reemplaza el ID de proceso incorrecto por el ID del proceso obtenido del comando ps (paso n.o 1 anterior).
- Reinicia ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Falla en las elecciones de líderes de ZooKeeper
Diagnóstico
Para diagnosticar, haz lo siguiente:
- Comprueba el registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
de ZooKeeper para errores. - Comprueba si hubo algún cambio en la configuración que pueda provocar la elección de ZooKeeper de la a fracasar.
- Revisa el
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
y asegúrate de que todos Los ZooKeepers en el clúster tienen el número y las direcciones IP correctos para el parámetro server.#. Además, ten en cuenta que para que la elección de líder tenga éxito, se necesita un mínimo de 3 votantes. y el número de votantes debe ser impar. Si hay muy pocos votantes, como solo 2. votantes, no puede llegar a un quórum para elegir un líder entre solo 2 votantes.
Solución
Por lo general, el error en las elecciones de ZooKeeper se debe a un myid mal configurado. Usa la resolución en Miid de ZooKeeper mal configurado para solucionar el error electoral.
Si el problema persiste y se necesita un diagnóstico más detallado, comunícate con el equipo de asistencia de Apigee Edge.