<ph type="x-smartling-placeholder"></ph>
  Sie sehen die Dokumentation zu Apigee Edge.
  Gehen Sie zur
     Apigee X-Dokumentation. Weitere Informationen
Symptom
ZooKeeper-Prozess kann nicht gestartet werden.
Fehlermeldungen
Wenn Sie versuchen, den ZooKeeper-Prozess zu starten, wird die folgende Fehlermeldung zurückgegeben. , was darauf hinweist, dass ZooKeeper nicht gestartet werden konnte:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Mögliche Ursachen
In der folgenden Tabelle sind mögliche Ursachen für dieses Problem aufgeführt:
| Ursache | Für | 
|---|---|
| Falsch konfigurierte ZooKeeper-Myid | Edge Private Cloud-Nutzer | 
| ZooKeeper-Port wird verwendet | Edge Private Cloud-Nutzer | 
| Falsche Prozess-ID in der Datei apigee-zookeeper.pid | Edge Private Cloud-Nutzer | 
| ZooKeeper-Leader – Wahlfehler | Edge Private Cloud-Nutzer | 
Klicken Sie auf einen Link in der Tabelle, um mögliche Lösungen zu sehen.
Falsch konfigurierte ZooKeeper-Myid
In den folgenden Abschnitten erhalten Sie einen Überblick über die Datei myid und beschreiben, wie Sie Diagnosen stellen und Probleme mit der Konfiguration zu beheben.
Übersicht über die myid-Datei
Auf jedem ZooKeeper-Knoten befinden sich zwei Dateien:
- Die Datei /opt/apigee/apigee-zookeeper/conf/zoo.cfgmit einer Liste von IP-Adressen für alle ZooKeeper-Knoten im Cluster.Wenn beispielsweise /opt/apigee/apigee-zookeeper/conf/zoo.cfgden Parameter IP-Adressen von drei ZooKeeper-Knoten des Clusters:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888 
- Die Datei /opt/apigee/data/apigee-zookeeper/data/myidenthält eine einzelne Zeile mit Text, der der Servernummer des jeweiligen ZooKeeper-Knotens entspricht. Das Myid von Server 1 enthält den Text „1“ und sonst nichts. Die ID muss innerhalb des Ensembles eindeutig sein. und sollte einen Wert zwischen 1 und 255 haben.Auf ZooKeeper server.1 wird z. B. der Parameter Die Datei „ /opt/apigee/data/apigee-zookeeper/data/myid“ sollte nur den Text „1“ enthalten wie unten dargestellt:$ cat myid 1 
Diagnose
- Prüfen Sie das ZooKeeper-Protokoll /opt/apigee/var/log/apigee-zookeeper/zookeeper.logauf Fehler.
- Wenn Sie die WARN-Meldung „Verbindung unterbrochen für ID #, meine ID = #“ sehen,
    wie in der Abbildung unten gezeigt, könnte das Problem dadurch verursacht werden, dass der Server #
    in der myid-Datei falsch konfiguriert oder beschädigt ist.
      [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) 
- Sehen Sie sich die Datei /opt/apigee/apigee-zookeeper/conf/zoo.cfgan und notieren Sie die server.# für den aktuellen ZooKeeper-Knoten.
- Sehen Sie in der Datei /opt/apigee/data/apigee-zookeeper/data/myidnach, ob der Text in dieser Datei mit dem Server.# übereinstimmt, der in Schritt 2 angegeben ist.
- Wenn es eine Abweichung gibt, haben Sie die Ursache dafür ermittelt, dass ZooKeeper beginnen.
Auflösung
Wenn die Datei „myid“ falsch konfiguriert ist, bearbeiten Sie die Datei „myid“ und ersetzen Sie den Wert durch einen korrekten Text für den Parameter server.# in der Datei "zoo.cfg".
ZooKeeper-Port wird verwendet
Diagnose
- ZooKeeper-Protokoll /opt/apigee/var/log/apigee-zookeeper/zookeeper.logprüfen auf Fehler.
- Wenn Sie die Ausnahme java.net.BindException: Address already in usewährend der Bindung an Port Nr. 2181, wie in der nachfolgenden Abbildung gezeigt, an, dass der ZooKeeper von einem anderen Prozess verwendet wird. ZooKeeper konnte daher nicht gestartet werden.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) 
- Verwenden Sie den folgenden netstat-Befehl, um zu bestätigen, dass der ZooKeeper-Port 2181 tatsächlich verwendet wird.
    durch einen anderen Prozess:
      netstat -an | grep 2181 
Auflösung
Wenn der ZooKeeper-Port 2181 noch verwendet wird, gehen Sie wie unten beschrieben vor, um dieses Problem zu beheben. Problem:
- Verwenden Sie den Befehl netstat, um den Prozess zu finden, der Port 2181 blockiert. Beenden Sie den Prozess, der den ZooKeeper-Port 2181 verwendet:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016 
- Bereinigen Sie die PID und sperren Sie vorhandene Dateien:
      /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock 
- Starten Sie ZooKeeper neu:
      /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart 
Falsche Prozess-ID in der Datei apigee-zookeeper.pid
Beim Versuch, ZooKeeper zu stoppen oder neu zu starten, kann dies scheitern, da der
  apigee-zookeeper.pid Datei enthält eine ältere/falsche PID und nicht die der aktuellen
  den ZooKeeper-Prozess ausführt. Dies kann passieren, wenn der ZooKeeper-Prozess unerwartet beendet wurde oder
  abrupt aus irgendeinem Grund nicht gelöscht wurde und die Datei apigee-zookeeper.pid nicht gelöscht wurde.
Diagnose
- Rufen Sie die Prozess-ID des derzeit ausgeführten ZooKeeper-Prozesses ab, indem Sie den
    Befehl ps:ps -ef | grep zookeeper 
- Prüfen Sie, ob die Datei /opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pidexistiert. Falls vorhanden, notieren Sie sich die in diese Datei geschriebene Prozess-ID.
- Vergleichen Sie die Prozess-IDs aus Schritt 1 und Schritt 2. Sind sie unterschiedlich, hat die Ursache
    für dieses Problem ist die falsche Prozess-ID in apigee-zookeeper.pid file..
Auflösung
- Bearbeiten Sie die Datei „apigee-zookeeper.pid“ und ersetzen Sie die falsche Prozess-ID durch die richtige Prozess-ID, die mit dem ps-Befehl abgerufen wurde (Schritt 1 oben).
- Starten Sie ZooKeeper neu:
      /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart 
ZooKeeper-Leader – Wahlfehler
Diagnose
Zur Diagnose:
- Prüfen Sie das ZooKeeper-Protokoll /opt/apigee/var/log/apigee-zookeeper/zookeeper.logauf Fehler.
- Überprüfen Sie, ob Konfigurationsänderungen vorgenommen wurden, die dazu führen können, dass ZooKeeper die führen könnte.
- Prüfen Sie, ob alle /opt/apigee/apigee-zookeeper/conf/zoo.cfgZooKeepers im Cluster haben die richtige Nummer und IP-Adressen für den Parameter server.#. Damit eine Wahl zum Spitzenreiter erfolgreich werden kann, muss die Mindestanzahl von drei Wählern enthalten sein. und die Anzahl der Wähler sollte ungerade sein. Wenn es zu wenige Wähler gibt, zum Beispiel Wähler können nicht beschlossen werden, dass nur zwei Wähler einen Vorsitzenden wählen.
Auflösung
In der Regel wird das Fehlschlagen von ZooKeeper-Wahlen durch eine falsch konfigurierte myid verursacht. Verwenden Sie die Auflösung in Falsch konfigurierte ZooKeeper-myid zum Beheben des Wahlfehlers.
Wenn das Problem weiterhin besteht und eine weitere Diagnose erforderlich ist, wenden Sie sich an den Apigee Edge-Support.