<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
Impossible de démarrer le processus ZooKeeper.
Messages d'erreur
Lorsque vous tentez de démarrer le processus ZooKeeper, le message d'erreur suivant est renvoyé indiquant que ZooKeeper n'a pas pu être démarré:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Causes possibles
Le tableau suivant répertorie les causes possibles de ce problème:
Cause | Pour |
---|---|
Myid ZooKeeper mal configuré | Utilisateurs de cloud privé Edge |
Port ZooKeeper utilisé | Utilisateurs de cloud privé Edge |
ID de processus incorrect dans le fichier apigee-zookeeper.pid | Utilisateurs de cloud privé Edge |
Échec de l'élection des leaders de ZooKeeper | Utilisateurs de cloud privé Edge |
Cliquez sur un lien du tableau pour afficher les solutions possibles à cette cause.
Myid ZooKeeper mal configuré
Les sections suivantes présentent le fichier myid et expliquent comment diagnostiquer et pour résoudre les problèmes de configuration.
Présentation du fichier myid
Chaque nœud ZooKeeper comporte deux fichiers:
- Le fichier
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
, qui contient une liste de Adresses IP de tous les nœuds ZooKeeper du cluster.Par exemple, si
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
contient le Adresses IP de trois nœuds ZooKeeper faisant partie du cluster, comme suit:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- Le fichier
/opt/apigee/data/apigee-zookeeper/data/myid
contient une seule ligne de qui correspond au numéro de serveur de ce nœud ZooKeeper spécifique. Le myid de le serveur 1 contiendra le texte "1" et rien d'autre. L'ID doit être unique au sein de l'ensemble et doit avoir une valeur comprise entre 1 et 255.Par exemple, sur le serveur ZooKeeper server.1, Le fichier
/opt/apigee/data/apigee-zookeeper/data/myid
ne doit contenir que le texte 1 comme indiqué ci-dessous:$ cat myid 1
Diagnostic
- Recherchez dans le journal ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
les erreurs. - Si un message d'avertissement semblable à "Connexion interrompue pour ID #, mon identifiant = #" s'affiche,
comme le montre la figure ci-dessous, ce problème est peut-être dû au fait que le serveur n°
dans le fichier myid est mal configuré ou corrompu.
[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)
- Vérifiez le fichier
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
et notez la server.# pour le nœud ZooKeeper actuel. - Vérifiez le fichier
/opt/apigee/data/apigee-zookeeper/data/myid
et voyez si le texte dans ce fichier correspond au serveur.# noté à l'étape 2. - En cas de non-concordance, cela signifie que vous avez identifié la cause de l'échec de l'exécution de ZooKeeper. démarrer.
Solution
Si le fichier myid n'est pas configuré correctement, modifiez-le et remplacez la valeur par un Texte correct représentant le paramètre server.# dans le fichier zoo.cfg.
Port ZooKeeper utilisé
Diagnostic
- Recherchez dans le journal ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
les erreurs. - Si vous remarquez l'exception
java.net.BindException: Address already in use
tout en étant lié au port #2181, comme illustré dans la figure ci-dessous, indique que le ZooKeeper le port 2181 est utilisé par un autre processus. Par conséquent, ZooKeeper n'a pas pu être démarré.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)
- Utilisez la commande netstat ci-dessous pour vérifier que le port 2181 de ZooKeeper est bien utilisé.
par un autre processus:
netstat -an | grep 2181
Solution
Si le port 2181 ZooKeeper est toujours utilisé, suivez la procédure ci-dessous pour résoudre ce problème. problème:
- Utilisez la commande
netstat
pour rechercher le processus qui se trouve sur le port 2181. Interrompez le processus qui utilise le port 2181 de ZooKeeper:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Nettoyez les fichiers pid et verrouillez-les, le cas échéant:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Redémarrez ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ID de processus incorrect dans le fichier apigee-zookeeper.pid
Lorsque vous essayez d'arrêter/redémarrer ZooKeeper, l'opération peut échouer, car la classe
Le fichier apigee-zookeeper.pid
contient un pid plus ancien/incorrect, et non celui de l'actuel
de l'exécution du processus ZooKeeper. Cela peut se produire si le processus ZooKeeper s'est arrêté de manière inattendue ou
brusquement pour une raison quelconque, et le fichier apigee-zookeeper.pid
n'a pas été supprimé.
Diagnostic
- Obtenez l'identifiant du processus ZooKeeper en cours d'exécution en exécutant la commande
Commande
ps
:ps -ef | grep zookeeper
- Vérifiez si le fichier
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
existe. S'il existe, notez l'ID de processus écrit dans ce fichier. - Comparez les identifiants de processus issus des étapes 1 et 2. Si elles sont différentes, la cause
pour ce problème est l'identifiant de processus incorrect dans
apigee-zookeeper.pid file.
Solution
- Modifiez le fichier apigee-zookeeper.pid et remplacez l'identifiant de processus incorrect par le bon. ID de processus obtenu à l'aide de la commande "ps" (étape 1 ci-dessus).
- Redémarrez ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Échec de l'élection des responsables ZooKeeper
Diagnostic
Pour diagnostiquer un problème:
- Recherchez dans le journal ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
les erreurs. - Vérifiez si des modifications de configuration ont pu entraîner l'élection de ZooKeeper par à l'échec.
- Vérifiez le
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
et assurez-vous que tous ZooKeepers du cluster dispose du nombre et des adresses IP appropriés pour le paramètre server.#. Notez également que pour que l'élection du chef soit une réussite, elle doit compter au moins trois votants. et le nombre d'électeurs doit être composé de nombres impairs. S'il n'y a pas assez d'électeurs, par exemple électeurs, il ne peut pas atteindre un quorum pour choisir un leader parmi deux électeurs seulement.
Solution
En règle générale, l'échec d'une élection pour ZooKeeper est dû à un myid mal configuré. Utiliser la résolution de Une mauvaise configuration de ZooKeeper myid permet de résoudre l'échec de l'élection.
Si le problème persiste et qu'un diagnostic plus approfondi est nécessaire, contactez l'assistance Apigee Edge.