<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.cfg
mit einer Liste von IP-Adressen für alle ZooKeeper-Knoten im Cluster.Wenn beispielsweise
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
den 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/myid
enthä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.log
auf 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.cfg
an und notieren Sie die server.# für den aktuellen ZooKeeper-Knoten. - Sehen Sie in der Datei
/opt/apigee/data/apigee-zookeeper/data/myid
nach, 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.log
prüfen auf Fehler. - Wenn Sie die Ausnahme
java.net.BindException: Address already in use
wä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.pid
existiert. 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.log
auf 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.cfg
ZooKeepers 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.