<ph type="x-smartling-placeholder"></ph>
Vous consultez la documentation Apigee Edge.
Accédez à la page
Documentation sur Apigee X. En savoir plus
Symptôme
Les problèmes de connectivité de ZooKeeper peuvent se manifester par différents symptômes, par exemple:
- Erreurs de déploiement du proxy d'API
- Les appels à l'API Management échouent avec des erreurs 5XX
- Échec du démarrage des routeurs ou des processeurs de messages
- Les composants d'analyse signalent une perte de connexion ZooKeeper dans le fichier system.logs
Messages d'erreur
Vous trouverez ci-dessous des exemples de messages d'erreur pouvant être observés en cas de perte de connexion vers les nœuds ZooKeeper.
- L'erreur suivante est renvoyée dans les journaux du serveur de gestion lorsqu'un déploiement de proxy d'API
échoue en raison d'une perte de connexion 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
- Au démarrage, les routeurs et les processeurs de messages se connectent à ZooKeeper. S'il y a
des problèmes de connectivité avec ZooKeeper, le démarrage de ces composants échouera
erreur:
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]
- L'interface utilisateur Edge peut afficher l'erreur suivante, indiquant qu'elle n'a pas pu vérifier le
État du déploiement des proxys d'API:
Error Fetching Deployments Error while checking path existence for path: path
Causes possibles
Le tableau suivant répertorie les causes possibles de ce problème:
Cause | Pour |
---|---|
Problème de connectivité réseau entre différents centres de données | Utilisateurs de cloud privé Edge |
Le nœud ZooKeeper ne diffuse pas les requêtes | Utilisateurs de cloud privé Edge |
Cliquez sur un lien du tableau pour afficher les solutions possibles à cette cause.
Problème de connectivité réseau entre différents centres de données
Diagnostic
Un cluster ZooKeeper peut comporter des nœuds couvrant plusieurs régions/centres de données, tels que DC-1 et DC-2. La topologie DC classique d'Apigee Edge 2 présente les éléments suivants:
- ZooKeeper serveurs 1, 2 et 3 en tant qu'électeurs dans DC-1
- ZooKeeper 4 et 5 en tant qu'électeurs, et ZooKeeper 6 en tant qu'observateur dans DC-2.
Si la région DC-1 tombe en panne ou si la connectivité réseau entre DC-1 et DC-2 est interrompue, Les nœuds ZooKeeper ne peuvent pas élire un nouveau leader dans DC-2 et ils ne communiquent pas avec le leader. d'un nœud. Les observateurs ZooKeeper ne peuvent pas élire un nouveau chef, et les deux électeurs restants de DC-2 ne le font pas. disposer d'un quorum d'au moins trois nœuds d'électeur pour élire un nouveau chef ; Les ZooKeepers de DC-2 seront donc ne pourra pas traiter les requêtes. Les nœuds ZooKeeper restants dans DC-2 continueront d'être lus en boucle. à réessayer de se connecter aux électeurs de ZooKeeper pour trouver le leader.
Solution
Appliquez les solutions suivantes pour résoudre ce problème dans l'ordre indiqué.
Si vous ne parvenez pas à résoudre le problème après avoir essayé ces solutions, veuillez contactez l'assistance Apigee.
Solution 1
- Rapprochez-vous de vos administrateurs réseau pour résoudre le problème de connectivité réseau entre les centres de données.
- Lorsque l'ensemble ZooKeeper est en mesure de communiquer entre les centres de données et de choisir un Chef ZooKeeper, les nœuds doivent devenir opérationnels et pouvoir traiter les requêtes.
Solution 2
- Si la réparation de la connectivité réseau prend du temps, une solution de contournement consiste à reconfigurer
de nœuds ZooKeeper dans la région où ils sont indisponibles. Par exemple, reconfigurez le ZooKeeper
dans le cluster DC-2 afin que les trois nœuds ZooKeeper de cette région soient tous des votants et supprimez le nœud
server.#
dans lezoo.cfg
de ZooKeepers de la région DC-1.- Dans l'exemple suivant,
zoo.cfg
configure les nœuds pour deux régions où DC-1 utiliseus-ea
. noms d'hôtes indiquant la région US-East et DC-2 utilise des noms d'hôteus-wo
correspondant à la région US-West. (REMARQUE : Seules les configurations pertinentes sont affichées)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
Dans l'exemple ci-dessus, reconfigurez
zoo.cfg
comme suit: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
- À l'aide du code avec la configuration,
Créez un fichier
/opt/apigee/customer/application/zookeeper.properties
avec les éléments suivants: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\
Dans ce qui précède, les nœuds US-East sont supprimés, et les nœuds US-West sont promus en tant que votants lorsque l'annotation
:observer
est supprimée. - Dans l'exemple suivant,
- Sauvegarder
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
et les anciennes/opt/apigee/customer/application/zookeeper.properties
Ces fichiers seront utilisés pour restaurer les valeurs par défaut lorsque la connectivité réseau sera rétablie entre les centres de données.
Désactivez la notation d'observateur pour le nœud d'observateur. Pour ce faire, Ajoutez la configuration suivante en haut de
/opt/apigee/customer/application/zookeeper.properties
:conf_zoo_peertype=
-
Modifiez le fichier
/opt/apigee/data/apigee-zookeeper/data/myid
comme suit :- Pour
server.1
, remplacez l'entrée 4 dans 1 dansmyid
. - Pour
server.2
, remplacez la valeur demyid
(5) par 2. - Pour
server.3
, remplacez la valeur demyid
(6) par 3.
- Pour
- Redémarrez les nœuds ZooKeeper dans la région où vous avez reconfiguré le ZooKeeper. cluster.
- Répétez la configuration ci-dessus de l'étape 1b à l'étape 5 sur tous les nœuds ZooKeeper de DC-2.
- Vérifiez que les nœuds sont en phase avec une variante optimale:
$ 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
Le résultat de cette commande contient une ligne indiquant "mode" suivi de "responsable" si est le leader, ou "follower" s'il s'agit d'un abonné.
Une fois le réseau entre les centres de données rétabli, les configurations ZooKeeper peuvent être annulées sur les nœuds ZooKeeper dans DC-2.
Solution 3
- Si le ou les nœuds ZooKeeper du cluster ne sont pas démarrés, redémarrez-les.
- Consultez les journaux ZooKeeper pour déterminer la raison de l'interruption du nœud ZooKeeper.
Les journaux ZooKeeper sont disponibles dans le répertoire suivant:
$ 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
- Contactez l'assistance Apigee et fournissez-lui la Journaux ZooKeeper pour dépanner la cause d'un nœud ZooKeeper qui a pu être arrêté.
Le nœud ZooKeeper ne diffuse pas de requêtes
Un nœud ZooKeeper de l'ensemble peut devenir non opérationnel et être incapable de répondre au client requêtes. Les raisons peuvent être multiples :
- Le nœud a été arrêté sans avoir été redémarré.
- Le nœud a été redémarré sans que le démarrage automatique soit activé.
- La charge système sur le nœud a entraîné son indisponibilité ou celui-ci comme non opérationnel.
Diagnostic
- Exécutez les commandes de vérification de l'état ZooKeeper suivantes sur chacun des nœuds ZooKeeper et
vérifiez le résultat:
<ph type="x-smartling-placeholder">
- </ph>
-
$ echo "ruok" | nc localhost 2181
Exemple de résultat :
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Vérifiez le mode pour déterminer si le nœud ZooKeeper est un leader ou un follower.
Exemple de résultat pour un nœud ZooKeeper unique et tout-en-un:
$ 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
Cette commande liste les variables ZooKeeper qui peuvent être utilisées pour vérifier l'état le cluster ZooKeeper.
Exemple de résultat :
$ 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
Cette commande liste les statistiques sur les performances et les clients connectés.
Exemple de résultat :
$ 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
Cette commande fournit des informations détaillées sur les connexions ZooKeeper.
Exemple de résultat :
$ 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)
Si l'une des trois dernières commandes de vérification de l'état affiche le message suivant:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Elle indique ensuite que des nœuds ZooKeeper spécifiques ne diffusent pas de requêtes.
-
- Consultez les journaux ZooKeeper sur le nœud concerné et essayez de localiser les erreurs à l'origine du problème.
ZooKeeper va être arrêté. Les journaux ZooKeeper sont disponibles dans le répertoire suivant:
$ 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
Solution
- Redémarrez tous les autres nœuds ZooKeeper du cluster un par un.
- Exécutez de nouveau les commandes de vérification de l'état ZooKeeper pour chaque nœud et vérifiez que vous obtenez les résultats attendus. de sortie.
Contactez l'assistance Apigee pour résoudre le problème. la charge du système si elle persiste ou si les redémarrages ne résolvent pas le problème.