Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Sintoma
Os problemas de conectividade do ZooKeeper podem se manifestar como diferentes sintomas, como:
- Erros de implantação do proxy de API
- As chamadas da API Management falham com erros 5XX
- Falha ao iniciar roteadores ou processadores de mensagens
- Os componentes do Analytics informam a perda de conexão do ZooKeeper em system.logs
Mensagens de erro
Veja a seguir exemplos de mensagens de erro que podem ser observadas quando há perda de conexão com os nós do ZooKeeper.
- O seguinte erro é retornado nos registros do Servidor de gerenciamento quando uma implantação de proxy de API falha devido à perda de conexão do ZooKeeper:
org: env: main INFO ZOOKEEPER - ZooKeeperServiceImpl.exists() : Retry path existence path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR ZOOKEEPER - ZooKeeperServiceImpl.exists() : Could not detect existence of path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable , reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR KERNEL.DEPLOYMENT - ServiceDeployer.startService() : ServiceDeployer.deploy() : Got a life cycle exception while starting service [ServerRegistrationService, Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable] : com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorCheckingPathExis tence, message = Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, associated contexts = []} 2015-03-25 10:22:39,811 org: env: main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : EventService com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:339) ~[zookeeper-1.0.0.jar:na] at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists( ZooKeeperServiceImpl.java:323) ~[zookeeper-1.0.0.jar:na] at ... snipped
- Durante a inicialização, os roteadores e os processadores de mensagens se conectam ao ZooKeeper. Se houver
problemas de conectividade com o ZooKeeper, esses componentes não serão iniciados e mostrará o seguinte
erro:
2017-08-01 23:20:00,404 CuratorFramework-0 ERROR o.a.c.f.i.CuratorFrameworkImpl - CuratorFrameworkImpl.logError() : Background operation retry gave up org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkBackgroundRetry(CuratorFrameworkImpl.java:710) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:827) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275) [curator-framework-2.5.0.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
- A interface do Edge pode exibir o seguinte erro indicando que não foi possível verificar o
status de implantação dos proxies de API:
Error Fetching Deployments Error while checking path existence for path: path
Causas possíveis
A tabela a seguir lista as possíveis causas desse problema:
Causa | Para |
---|---|
Problema de conectividade de rede em data centers diferentes | Usuários da nuvem privada do Edge |
O nó do ZooKeeper não está atendendo às solicitações | Usuários da nuvem privada do Edge |
Clique em um link na tabela para ver as possíveis soluções para a causa.
Problema de conectividade de rede em diferentes data centers
Diagnóstico
Um cluster do ZooKeeper pode ter nós que abrangem várias regiões/data centers, como DC-1 e DC-2. A topologia de DC típica do Apigee Edge 2 terá:
- Os servidores do ZooKeeper 1, 2 e 3 como eleitores em DC-1
- ZooKeeper 4 e 5 como eleitores e ZooKeeper 6 como um observador em DC-2.
Se a região DC-1 ficar inativa ou a conectividade de rede entre DC-1 e DC-2 for interrompida, os nós do ZooKeeper não poderão eleger um novo líder no DC-2 e falharão ao se comunicar com o nó líder. Os observadores do ZooKeeper não podem eleger um novo líder e os dois eleitores restantes no DC-2 não têm um quórum de pelo menos três nós de eleitores para eleger um novo líder. Assim, os ZooKeepers no DC-2 não poderão processar nenhuma solicitação. Os nós restantes do ZooKeeper no DC-2 continuarão em loop, tentando se conectar de volta aos eleitores do ZooKeeper para encontrar o líder.
Resolução
Aplique as soluções a seguir para resolver esse problema na ordem especificada.
Se não for possível resolver o problema depois dessas soluções, entre em contato com o suporte da Apigee.
Solução 1
- Trabalhe com seus administradores de rede para reparar o problema de conectividade de rede entre os data centers.
- Quando o conjunto do ZooKeeper conseguir se comunicar entre os data centers e eleger um líder do ZooKeeper, os nós estarão íntegros e poderão processar solicitações.
Solução 2
- Se o reparo da conectividade de rede demorar, uma solução alternativa é reconfigurar
os nós do ZooKeeper na região em que eles estão inativos. Por exemplo, reconfigure o cluster do ZooKeeper em DC-2 para que os três nós do ZooKeeper nessa região sejam todos eleitores e remova o
server.#
emzoo.cfg
dos ZooKeepers da região de DC-1.- No exemplo a seguir,
zoo.cfg
configura nós para duas regiões em que o DC-1 usa nomes de hostus-ea
que indicam a região US-East, e o DC-2 usa nomes de hostus-wo
que indicam a região US-West. OBSERVAÇÃO: somente as configurações relevantes são exibidas:server.1=zk01ea.us-ea.4.apigee.com:2888:3888 server.2=zk02ea.us-ea.4.apigee.com:2888:3888 server.3=zk03ea.us-ea.4.apigee.com:2888:3888 server.4=zk04wo.us-wo.4.apigee.com:2888:3888 server.5=zk05wo.us-wo.4.apigee.com:2888:3888 server.6=zk06wo.us-wo.4.apigee.com:2888:3888:observer
No exemplo acima, reconfigure o
zoo.cfg
da seguinte maneira:server.1=zk04wo.us-wo.4.apigee.com:2888:3888 server.2=zk05wo.us-wo.4.apigee.com:2888:3888 server.3=zk06wo.us-wo.4.apigee.com:2888:3888
- Usando o código com configuração,
crie um arquivo
/opt/apigee/customer/application/zookeeper.properties
com o seguinte:conf_zoo_quorum=server.1=zk04wo.us-wo.4.apigee.com:2888:3888\ \nserver.2=zk05wo.us-wo.4.apigee.com:2888:3888\ \nserver.3=zk06wo.us-wo.4.apigee.com:2888:3888\
Na figura acima, os nós do US-Leste são removidos e os nós do US-Oeste são promovidos para os eleitores quando a anotação
:observer
é removida. - No exemplo a seguir,
- Faça backup de
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
e do/opt/apigee/customer/application/zookeeper.properties
antigo.Esses arquivos serão usados para restaurar os padrões quando houver um backup de conectividade de rede entre os data centers.
Desativar a notação do observador para o nó do observador. Para fazer isso, adicione a seguinte configuração na parte de cima de
/opt/apigee/customer/application/zookeeper.properties
:conf_zoo_peertype=
-
Edite o arquivo
/opt/apigee/data/apigee-zookeeper/data/myid
da seguinte forma:- Para
server.1
, mude a entrada dentro demyid
de 4 para 1. - Em
server.2
, mudemyid
de 5 para 2. - Para
server.3
, mudemyid
de 6 para 3.
- Para
- Reinicie os nós do ZooKeeper na região em que você reconfigurou o cluster do ZooKeeper.
- Repita a configuração acima das etapas 1b à 5 em todos os nós do ZooKeeper no DC-2.
- Valide se os nós estão ativos com um líder:
$ echo srvr | nc zk04wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk05wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk06wo.us-wo.4.apigee.com 2181
A saída desse comando vai conter uma linha que diz "mode" seguida de "leader" se ele for o líder ou "seguidor" se for um seguidor.
Quando a rede entre os data centers é restabelecida, as alterações nas configurações do ZooKeeper podem ser revertidas nos nós do ZooKeeper no DC-2.
Solução 3
- Se os nós do ZooKeeper no cluster não forem iniciados, reinicie-o.
- Verifique os registros do ZooKeeper para determinar por que o nó do ZooKeeper falhou.
Os registros do ZooKeeper estão disponíveis no seguinte diretório:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
- Entre em contato com o suporte da Apigee e forneça os registros do ZooKeeper para solucionar problemas de causa de qualquer nó do ZooKeeper que possa ter sido interrompido.
O nó do ZooKeeper não está atendendo às solicitações
Um nó do ZooKeeper no conjunto pode se tornar não íntegro e não conseguir responder às solicitações do cliente. Conheça os possíveis motivos:
- O nó foi interrompido sem ser reiniciado.
- O nó foi reinicializado sem o início automático ativado.
- A carga do sistema no nó fez com que ele ficasse inativo ou se tornou não íntegro.
Diagnóstico
- Execute os seguintes comandos de verificação de integridade do ZooKeeper em cada um dos nós do ZooKeeper e verifique a saída:
-
$ echo "ruok" | nc localhost 2181
Exemplo de saída:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Verifique o modo para determinar se o nó do ZooKeeper é um líder ou um seguidor.
Exemplo de saída para um nó único do ZooKeeper:
$ echo srvr | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Latency min/avg/max: 0/0/88 Received: 4206601 Sent: 4206624 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo mntr | nc localhost 2181
Esse comando lista as variáveis do ZooKeeper que podem ser usadas para verificar a integridade do cluster do ZooKeeper.
Exemplo de saída:
$ echo mntr | nc localhost 2181 zk_version 3.4.5-1392090, built on 09/30/2012 17:52 GMT zk_avg_latency 0 zk_max_latency 88 zk_min_latency 0 zk_packets_received 4206750 zk_packets_sent 4206773 zk_num_alive_connections 8 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 282 zk_watch_count 194 zk_ephemerals_count 1 zk_approximate_data_size 22960 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 4096
-
$ echo stat | nc localhost 2181
Esse comando lista estatísticas sobre o desempenho e os clientes conectados.
Exemplo de saída:
$ echo stat | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /10.128.0.8:54152[1](queued=0,recved=753379,sent=753385) /10.128.0.8:53944[1](queued=0,recved=980269,sent=980278) /10.128.0.8:54388[1](queued=0,recved=457094,sent=457094) /10.128.0.8:54622[1](queued=0,recved=972938,sent=972938) /10.128.0.8:54192[1](queued=0,recved=150843,sent=150843) /10.128.0.8:44564[1](queued=0,recved=267332,sent=267333) /127.0.0.1:40820[0](queued=0,recved=1,sent=0) /10.128.0.8:53960[1](queued=0,recved=150844,sent=150844) Latency min/avg/max: 0/0/88 Received: 4206995 Sent: 4207018 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo cons | nc localhost 2181
Esse comando fornece mais detalhes sobre as conexões do ZooKeeper.
Exemplo de saída:
$ echo cons | nc localhost 2181 /127.0.0.1:40864[0](queued=0,recved=1,sent=0) /10.128.0.8:54152[1](queued=0,recved=753400,sent=753406,sid=0x15d521a96d40007, lop=PING,est=1500321588647,to=40000,lcxid=0x972e9,lzxid=0x745,lresp=1502334173174, llat=0,minlat=0,avglat=0,maxlat=26) /10.128.0.8:53944[1](queued=0,recved=980297,sent=980306,sid=0x15d521a96d40005, lop=PING,est=1500321544896,to=40000,lcxid=0xce92a,lzxid=0x745,lresp=1502334176055, llat=0,minlat=0,avglat=0,maxlat=23) /10.128.0.8:54388[1](queued=0,recved=457110,sent=457110,sid=0x15d521a96d4000a, lop=PING,est=1500321673852,to=40000,lcxid=0x4dbe3,lzxid=0x745,lresp=1502334174245, llat=0,minlat=0,avglat=0,maxlat=22) /10.128.0.8:54622[1](queued=0,recved=972967,sent=972967,sid=0x15d521a96d4000b, lop=PING,est=1500321890175,to=40000,lcxid=0xccc9d,lzxid=0x745,lresp=1502334182417, llat=0,minlat=0,avglat=0,maxlat=88) /10.128.0.8:54192[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40008, lop=PING,est=1500321591985,to=40000,lcxid=0x8,lzxid=0x745,lresp=1502334184475, llat=3,minlat=0,avglat=0,maxlat=19) /10.128.0.8:44564[1](queued=0,recved=267354,sent=267355,sid=0x15d521a96d4000d, lop=PING,est=1501606633426,to=40000,lcxid=0x356e2,lzxid=0x745,lresp=1502334182315, llat=0,minlat=0,avglat=0,maxlat=35) /10.128.0.8:53960[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40006, lop=PING,est=1500321547138,to=40000,lcxid=0x5,lzxid=0x745,lresp=1502334177036, llat=1,minlat=0,avglat=0,maxlat=20)
Se algum dos três últimos comandos de verificação de integridade mostrar a seguinte mensagem:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Em seguida, isso indica que um ou mais nós do ZooKeeper não estão exibindo solicitações.
-
- Verifique os registros do ZooKeeper no nó específico e tente localizar os erros que estão causando a desativação do ZooKeeper. Os registros do ZooKeeper estão disponíveis no seguinte diretório:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
Resolução
- Reinicie todos os outros nós do ZooKeeper no cluster.
- Execute novamente os comandos de verificação de integridade do ZooKeeper em cada nó e veja se você consegue a saída esperada.
Entre em contato com o suporte da Apigee para solucionar a causa da carga do sistema se ela persistir ou se as reinicializações não resolverem o problema.