Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Sintoma
Não foi possível iniciar o processo do ZooKeeper.
Mensagens de erro
Quando você tenta iniciar o processo do ZooKeeper, a seguinte mensagem de erro é retornada indicando que o ZooKeeper não pôde ser iniciado:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Causas possíveis
A tabela a seguir lista as possíveis causas desse problema:
| Causa | Para |
|---|---|
| myid do ZooKeeper mal configurado | Usuários da nuvem privada do Edge |
| Porta do ZooKeeper em uso | Usuários da nuvem privada do Edge |
| ID do processo incorreto no arquivo apigee-zookeeper.pid | Usuários da nuvem privada do Edge |
| Falha na eleição do líder do ZooKeeper | Usuários da nuvem privada do Edge |
Clique em um link na tabela para conferir as possíveis resoluções para essa causa.
myid do ZooKeeper mal configurado
As seções a seguir oferecem uma visão geral do arquivo myid e descrevem como diagnosticar e resolver problemas de configuração incorreta.
Visão geral do arquivo myid
Em cada nó do ZooKeeper, há dois arquivos:
- O arquivo
/opt/apigee/apigee-zookeeper/conf/zoo.cfg, que contém uma lista de IPs para todos os nós do ZooKeeper no cluster.Por exemplo, se o
/opt/apigee/apigee-zookeeper/conf/zoo.cfgcontiver os IPs de três nós do ZooKeeper que fazem parte do cluster, da seguinte maneira:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- O arquivo
/opt/apigee/data/apigee-zookeeper/data/myidcontém uma única linha de texto que corresponde ao número do servidor desse nó específico do ZooKeeper. O myid do servidor 1 contém o texto "1" e nada mais. O ID precisa ser exclusivo no conjunto e ter um valor entre 1 e 255.Por exemplo, no servidor 1 do ZooKeeper, o
/opt/apigee/data/apigee-zookeeper/data/myidarquivo precisa conter apenas o texto 1 conforme mostrado abaixo:$ cat myid 1
Diagnóstico
- Verifique se há erros no registro do ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logpara erros. - Se você encontrar a mensagem de AVISO semelhante a "Conexão interrompida para o ID #, meu ID = #",
conforme mostrado na figura abaixo, a possível causa desse problema é que o servidor #
no arquivo myid está mal configurado ou corrompido.
[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)
- Verifique o arquivo
/opt/apigee/apigee-zookeeper/conf/zoo.cfge anote o server.# para o nó atual do ZooKeeper. - Verifique o arquivo
/opt/apigee/data/apigee-zookeeper/data/myide confira se o texto nesse arquivo corresponde ao server.# anotado na etapa 2. - Se houver uma incompatibilidade, você identificou a causa da falha ao iniciar o ZooKeeper.
Resolução
Se o arquivo myid estiver configurado incorretamente, edite-o e substitua o valor por um texto correto que represente o parâmetro server.# no zoo.cfg.
Porta do ZooKeeper em uso
Diagnóstico
- Verifique se há erros no registro do ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logpara erros. - Se você notar a exceção
java.net.BindException: Address already in useao vincular à porta #2181, conforme mostrado na figura abaixo, isso indica que a porta 2181 do ZooKeeper está sendo usada por outro processo. Portanto, o ZooKeeper não pôde ser iniciado.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)
- Use o comando netstat abaixo para confirmar se a porta 2181 do ZooKeeper está sendo usada
por outro processo:
netstat -an | grep 2181
Resolução
Se a porta 2181 do ZooKeeper ainda estiver em uso, siga as etapas abaixo para resolver esse problema:
- Use o comando
netstatpara encontrar o processo que está mantendo a porta 2181. Encerre o processo que está usando a porta 2181 do ZooKeeper:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Limpe os arquivos pid e de bloqueio, se eles existirem:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Reinicie o ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ID do processo incorreto no arquivo apigee-zookeeper.pid
Ao tentar parar/reiniciar o ZooKeeper, ele pode falhar porque o
apigee-zookeeper.pid arquivo contém um pid mais antigo/incorreto e não o do processo do ZooKeeper em execução. Isso pode acontecer se o processo do ZooKeeper for encerrado inesperadamente ou
abruptamente por algum motivo e o arquivo apigee-zookeeper.pid não for excluído.
Diagnóstico
- Receba o ID do processo do ZooKeeper em execução executando o
pscomando:ps -ef | grep zookeeper
- Verifique se o arquivo
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pidexiste. Se ele existir, anote o ID do processo gravado nesse arquivo. - Compare os IDs do processo das etapas 1 e 2. Se eles forem diferentes, a causa
desse problema é ter o ID do processo incorreto no
apigee-zookeeper.pid file.
Resolução
- Edite o arquivo apigee-zookeeper.pid e substitua o ID do processo incorreto pelo ID correto obtido no comando ps (etapa 1 acima).
- Reinicie o ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Falha na eleição do líder do ZooKeeper
Diagnóstico
Para diagnosticar :
- Verifique se há erros no registro do ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logpara erros. - Verifique se houve mudanças na configuração que podem causar falha na eleição do líder do ZooKeeper.
- Verifique o
/opt/apigee/apigee-zookeeper/conf/zoo.cfge confira se todos os ZooKeepers no cluster têm o número e os endereços IP corretos para o parâmetro server.#. Observe também que, para que a eleição do líder seja bem-sucedida, é necessário ter pelo menos três eleitores e o número de eleitores precisa ser ímpar. Se houver poucos eleitores, como apenas dois, não será possível chegar a um quórum para decidir um líder entre apenas dois eleitores.
Resolução
Normalmente, a falha na eleição do ZooKeeper é causada por um myid mal configurado. Use a resolução em myid do ZooKeeper mal configurado para resolver a falha na eleição.
Se o problema persistir e for necessário mais diagnóstico, entre em contato com o suporte do Apigee Edge.