Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Sintoma
Não é 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 não foi possível iniciar o ZooKeeper:
+ 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 configurado incorretamente | Usuários da nuvem privada do Edge |
Porta do ZooKeeper em uso | Usuários da nuvem privada do Edge |
ID de processo incorreto no arquivo apigee-zookeeper.pid | Usuários da nuvem privada do Edge |
Falha nas eleições de líder do ZooKeeper | Usuários da nuvem privada do Edge |
Clique em um link na tabela para ver as possíveis soluções para a causa.
Myid do ZooKeeper configurado incorretamente
As seções a seguir fornecem 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
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
contiver os IPs de três nós do ZooKeeper, 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/myid
contém uma única linha de texto que corresponde ao número do servidor desse nó específico do ZooKeeper. O myid do servidor 1 conteria o texto "1" e nada mais. O ID precisa ser exclusivo dentro do conjunto e ter um valor entre 1 e 255.Por exemplo, no ZooKeeper server.1, o arquivo
/opt/apigee/data/apigee-zookeeper/data/myid
precisa conter apenas o texto 1, conforme mostrado abaixo:$ cat myid 1
Diagnóstico
- Verifique se há erros no registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
do ZooKeeper. - Se aparecer uma mensagem de WARN semelhante a "Conexão corrompida para o ID #, meu id = #", como mostrado na figura abaixo, a possível causa para esse problema pode ser que o número do servidor no arquivo myid está corrompido ou configurado incorretamente.
[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.cfg
e anote o server.# para o nó atual do ZooKeeper. - Verifique o arquivo
/opt/apigee/data/apigee-zookeeper/data/myid
e veja se o texto nele corresponde ao server.# observado na etapa 2. - Se houver uma incompatibilidade, você terá identificado a causa da falha da inicialização do 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
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
do ZooKeeper. - Se você notar a exceção
java.net.BindException: Address already in use
ao se vincular à porta 2181, conforme mostrado na figura abaixo, isso indica que a porta 2181 do ZooKeeper está sendo usada por outro processo. Portanto, não foi possível iniciar o 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)
- Use o comando netstat abaixo para confirmar se a porta 2181 do ZooKeeper está realmente 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
netstat
para 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 o pid e bloqueie os arquivos, se houver:
/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 de processo incorreto no arquivo apigee-zookeeper.pid
Ao tentar interromper/reiniciar o ZooKeeper, é possível que ele falhe porque o arquivo apigee-zookeeper.pid
contém um pid mais antigo/incorreto e não o do processo do ZooKeeper em execução no momento. Isso poderá acontecer se o processo do ZooKeeper for encerrado inesperadamente ou
abruptamente por algum motivo e o arquivo apigee-zookeeper.pid
não tiver sido excluído.
Diagnóstico
- Encontre o ID do processo do ZooKeeper em execução no momento executando o
comando
ps
:ps -ef | grep zookeeper
- Verifique se o arquivo
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
existe. Se existir, anote o ID do processo escrito nesse arquivo. - Compare os IDs de processo extraídos das etapas 1 e 2. Se eles forem diferentes, a causa
do problema é o ID de processo incorreto no
apigee-zookeeper.pid file.
Resolução
- Edite o arquivo apigee-zookeeper.pid e substitua o ID de processo incorreto pelo ID correto extraído do comando ps (etapa 1 acima).
- Reinicie o ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Falha nas eleições de líder do ZooKeeper
Diagnóstico
Para diagnosticar:
- Verifique se há erros no registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
do ZooKeeper. - Verifique se houve alguma mudança na configuração que possa causar a falha da eleição do líder do ZooKeeper.
- Verifique o
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
e se todos os ZooKeepers no cluster têm o número e os endereços IP adequados para o parâmetro server.#. Para a eleição do líder ser bem-sucedida, é necessário ter no mínimo três eleitores, e o número de eleitores deve ser um número í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 eleitoral do ZooKeeper é causada por um myid configurado incorretamente. Use a resolução em Misconfigured ZooKeeper myid para resolver a falha eleitoral.
Se o problema persistir e mais diagnósticos forem necessários, entre em contato com o suporte do Apigee Edge.