Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
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 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 |
---|---|
MiID do ZooKeeper configurado incorretamente | Usuários da nuvem privada de borda |
Porta do ZooKeeper em uso | Usuários da nuvem privada de borda |
ID de processo incorreto no arquivo apigee-zookeeper.pid | Usuários da nuvem privada de borda |
Falha na eleição do líder do ZooKeeper | Usuários da nuvem privada de borda |
Clique em um link na tabela e consulte as possíveis soluções para essa causa.
Meu ID do ZooKeeper configurado incorretamente
As seções a seguir fornecem uma visão geral do arquivo myid e descrevem como diagnosticar e 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 o 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/myid
contém uma única linha de que corresponde ao número do servidor desse nó do ZooKeeper específico. Meu ajuda de servidor 1 conteria o texto "1" e nada mais. O ID precisa ser exclusivo no ensemble e deve ter um valor entre 1 e 255.Por exemplo, no ZooKeeper server.1, a O arquivo
/opt/apigee/data/apigee-zookeeper/data/myid
precisa conter apenas o texto 1 conforme mostrado abaixo:$ cat myid 1
Diagnóstico
- Verifique o registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
do ZooKeeper para erros. - Se você receber uma mensagem de WARN semelhante a "Conexão quebrada para o ID #, meu id = #",
conforme mostrado na figura abaixo, a possível causa desse problema poderia ser o erro no
no arquivo myid está configurada incorretamente ou está corrompida.
[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 as server.# do nó atual do ZooKeeper. - Verifique o arquivo
/opt/apigee/data/apigee-zookeeper/data/myid
e veja se o texto neste arquivo corresponde ao server.# anotado na etapa 2. - Se houver uma incompatibilidade, você terá identificado a causa da falha no ZooKeeper. começar.
Resolução
Se o arquivo myid estiver configurado incorretamente, edite o arquivo myid e substitua o valor por um texto correto que representa o parâmetro server.# no zoo.cfg.
Porta do ZooKeeper em uso
Diagnóstico
- Verificar o registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
do ZooKeeper por erros. - Se você encontrar a exceção
java.net.BindException: Address already in use
ao vincular à porta no 2181, como mostra a figura abaixo, indica que o ZooKeeper a porta 2181 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 de fato
por outro processo:
netstat -an | grep 2181
Resolução
Se a porta 2181 do ZooKeeper ainda estiver em uso, siga as etapas abaixo para solucionar isso 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 os arquivos pid e de bloqueio, 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
Quando você tenta parar/reiniciar o ZooKeeper, pode ocorrer uma falha porque o
O arquivo apigee-zookeeper.pid
contém um pid antigo/incorreto e não o do arquivo
que executa o processo ZooKeeper. Isso pode acontecer se o processo do ZooKeeper for encerrado inesperadamente ou
abruptamente por algum motivo e o arquivo apigee-zookeeper.pid
não foi excluído.
Diagnóstico
- Obtenha o ID do processo do ZooKeeper em execução no momento executando a propriedade
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 gravado nesse arquivo. - Compare os IDs de processo das etapas 1 e 2. Se forem diferentes, a causa
para este problema é ter 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 de processo obtido do comando ps (etapa 1 acima).
- Reinicie o ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Falha nas eleições do líder do ZooKeeper
Diagnóstico
Para diagnosticar:
- Verifique o registro
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
do ZooKeeper para erros. - Verifique se houve alguma alteração na configuração que possa causar a eleição do ZooKeeper do a fracasso do líder.
- Verifique o
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
e confira se todos Os ZooKeepers no cluster têm o número e os endereços IP apropriados 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 3 votos e o número de eleitores deve ter números ímpares. Se houver poucos eleitores, como apenas dois eleitores, não pode chegar a um quórum para decidir um líder entre apenas dois eleitores.
Resolução
Normalmente, as falhas eleitorais do ZooKeeper são causadas por um ID configurado incorretamente. Usar a resolução em Miid do ZooKeeper configurado incorretamente para lidar com o fracasso da eleição.
Se o problema persistir e precisar de mais diagnósticos, entre em contato com o suporte do Apigee Edge.