<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die ZooKeeper-Verbindungsprobleme können sich an verschiedenen Symptomen äußern, z. B.:
- Fehler bei der API-Proxy-Bereitstellung
- Verwaltungs-API-Aufrufe schlagen mit 5XX-Fehlern fehl
- Router oder Message Processor starten nicht
- Analytics-Komponenten melden ZooKeeper-Verbindungsverlust in system.logs.
Fehlermeldungen
Im Folgenden finden Sie Beispiele für Fehlermeldungen, die auftreten können, wenn Verbindungsverlust zu ZooKeeper-Knoten.
- Der folgende Fehler wird in Verwaltungsserverlogs zurückgegeben, wenn eine API-Proxy-Bereitstellung
schlägt aufgrund des Verbindungsverlusts von ZooKeeper fehl:
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
- Beim Start stellen die Router und Message Processor eine Verbindung zu ZooKeeper her. Wenn es
Verbindungsprobleme mit ZooKeeper haben, starten diese Komponenten nicht mit
Fehler:
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]
- Die Edge-Benutzeroberfläche zeigt möglicherweise den folgenden Fehler an, der darauf hinweist, dass die
Bereitstellungsstatus der API-Proxys:
Error Fetching Deployments Error while checking path existence for path: path
Mögliche Ursachen
In der folgenden Tabelle sind mögliche Ursachen für dieses Problem aufgeführt:
Ursache | Für |
---|---|
Problem mit der Netzwerkverbindung in verschiedenen Rechenzentren | Edge Private Cloud-Nutzer |
ZooKeeper-Knoten stellt keine Anfragen bereit | Edge Private Cloud-Nutzer |
Klicken Sie auf einen Link in der Tabelle, um mögliche Lösungen zu sehen.
Problem mit der Netzwerkverbindung in verschiedenen Rechenzentren
Diagnose
Ein ZooKeeper-Cluster kann Knoten haben, die sich über mehrere Regionen/Rechenzentren erstrecken, z. B. DC-1 und DC-2. Die typische DC-Topologie von Apigee Edge 2 sieht folgendermaßen aus:
- ZooKeeper-Server 1, 2 und 3 als Wähler in DC-1
- ZooKeeper 4 und 5 als Wähler und ZooKeeper 6 als Beobachter in DC-2.
Wenn die Region DC-1 ausfällt oder die Netzwerkkonnektivität zwischen DC-1 und DC-2 unterbrochen wird, ZooKeeper-Knoten können keinen neuen Leader in DC-2 auswählen und kommunizieren nicht mit dem Leader. Knoten. ZooKeeper-Beobachter können keinen neuen Anführer wählen und die beiden verbliebenen Wähler in Washington D.C. können dies nicht tun. haben ein Quorum von mindestens drei Wählerknoten, um einen neuen Leader zu wählen. Die ZooKeepers in DC-2 keine Anfragen bearbeiten können. Die verbleibenden ZooKeeper-Knoten in DC-2 werden weiter als Schleife wiedergegeben. Es wird versucht, eine Verbindung zu den ZooKeeper-Wählern herzustellen, um den Führenden zu finden.
Auflösung
Wende die folgenden Lösungen in der angegebenen Reihenfolge an, um dieses Problem zu beheben.
Falls Sie das Problem nach Ausprobieren dieser Lösungen nicht lösen können, wenden Sie sich an den Apigee-Support.
Lösung Nr. 1
- Arbeiten Sie mit Ihren Netzwerkadministratoren zusammen, um das Netzwerkverbindungsproblem zwischen den Rechenzentren.
- Wenn das ZooKeeper-Ensemble in der Lage ist, zwischen den Rechenzentren zu kommunizieren und einen ZooKeeper-Leader sind, sollten die Knoten fehlerfrei sein und Anfragen verarbeiten können.
Lösung Nr. 2
- Wenn die Reparatur der Netzwerkverbindung einige Zeit in Anspruch nimmt, können Sie das Problem umgehen, indem Sie die
ZooKeeper-Knoten in der Region, in der sie inaktiv sind. Sie können z. B. ZooKeeper neu konfigurieren.
Cluster in DC-2, sodass die 3 ZooKeeper-Knoten in dieser Region alle Voter sind, und entfernen den
server.#
inzoo.cfg
der ZooKeepers aus DC-1-Region.- Im folgenden Beispiel konfiguriert
zoo.cfg
Knoten für 2 Regionen, in denen DC-1us-ea
verwendet und DC-2 verwendetus-wo
-Hostnamen für die Region US-West. (HINWEIS: Es werden nur relevante Konfigurationen angezeigt):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
Konfigurieren Sie
zoo.cfg
im obigen Beispiel so neu: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
- Wenn Sie Code mit config verwenden,
Erstellen Sie eine Datei
/opt/apigee/customer/application/zookeeper.properties
mit folgendem Inhalt: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\
Im obigen Beispiel werden die Knoten von US-Ost entfernt und die Knoten US-West werden zu Wähler, wenn die Anmerkung
:observer
entfernt wird. - Im folgenden Beispiel konfiguriert
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
und alte Dateien sichern/opt/apigee/customer/application/zookeeper.properties
.Anhand dieser Dateien werden die Standardeinstellungen wiederhergestellt, sobald die Netzwerkverbindung wiederhergestellt ist. zwischen Rechenzentren.
Deaktivieren Sie die Beobachter-Notation für den Beobachterknoten. Gehen Sie dazu wie folgt vor: Fügen Sie oben in
/opt/apigee/customer/application/zookeeper.properties
die folgende Konfiguration hinzu:conf_zoo_peertype=
-
Bearbeiten Sie die Datei
/opt/apigee/data/apigee-zookeeper/data/myid
so:- Ändern Sie für
server.1
den Eintrag inmyid
von 4 in 1. - Ändere für
server.2
denmyid
von 5 in 2. - Ändere für
server.3
denmyid
von 6 zu 3.
- Ändern Sie für
- Starten Sie die ZooKeeper-Knoten in der Region neu, in der Sie ZooKeeper neu konfiguriert haben. Cluster.
- Wiederholen Sie die obige Konfiguration zwischen Schritt 1b und Schritt 5 auf allen ZooKeeper-Knoten in DC-2.
- Prüfen Sie, ob die Knoten bei einem Leader verfügbar sind:
$ 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
Die Ausgabe dieses Befehls enthält eine Zeile mit dem Text "mode". gefolgt von „leader“ wenn es ist der Leader oder „Follower“ ob sie Follower sind.
Wenn das Netzwerk zwischen Rechenzentren wiederhergestellt ist, werden die ZooKeeper-Konfigurationen Änderungen können auf den ZooKeeper-Knoten in DC-2 rückgängig gemacht werden.
Lösung Nr. 3
- Wenn ZooKeeper-Knoten im Cluster nicht gestartet werden, starten Sie ihn neu.
- Überprüfen Sie ZooKeeper-Protokolle, um festzustellen, warum der ZooKeeper-Knoten ausgefallen ist.
ZooKeeper-Logs sind im folgenden Verzeichnis verfügbar:
$ 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
- Wenden Sie sich an den Apigee-Support und geben Sie ZooKeeper-Protokolle zur Behebung der Ursache eines ZooKeeper-Knotens, der möglicherweise gestoppt wurde.
ZooKeeper-Knoten stellt keine Anfragen bereit
Ein ZooKeeper-Knoten im Ensemble kann fehlerhaft werden und nicht in der Lage sein, auf den Client zu antworten. -Anfragen. Mögliche Gründe:
- Der Knoten wurde ohne Neustart beendet.
- Der Knoten wurde neu gestartet, ohne dass Autostart aktiviert war.
- Die Systemlast des Knotens hat dazu geführt, dass dieser ausgefallen oder fehlerhaft ist.
Diagnose
- Führen Sie die folgenden ZooKeeper-Systemdiagnosebefehle auf allen ZooKeeper-Knoten aus und
überprüfen Sie die Ausgabe:
<ph type="x-smartling-placeholder">
- </ph>
-
$ echo "ruok" | nc localhost 2181
Beispielausgabe:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Überprüfen Sie den Modus, um festzustellen, ob der ZooKeeper-Knoten ein Leader oder Follower ist.
Beispielausgabe für einen einzelnen ZooKeeper-Knoten:
$ 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
Dieser Befehl listet die ZooKeeper-Variablen auf, mit denen der Status ZooKeeper-Cluster.
Beispielausgabe:
$ 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
Mit diesem Befehl werden Statistiken zur Leistung und zu verbundenen Clients aufgelistet.
Beispielausgabe:
$ 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
Dieser Befehl liefert erweiterte Details zu ZooKeeper-Verbindungen.
Beispielausgabe:
$ 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)
Wenn einer der letzten drei Systemdiagnosebefehle die folgende Meldung anzeigt:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Dann wird angegeben, dass bestimmte ZooKeeper-Knoten keine Anfragen bedienen.
-
- Überprüfen Sie die ZooKeeper-Protokolle auf dem jeweiligen Knoten und versuchen Sie, alle Fehler zu finden, die den
ZooKeeper ist nicht verfügbar. ZooKeeper-Logs sind im folgenden Verzeichnis verfügbar:
$ 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
Auflösung
- Starten Sie alle anderen ZooKeeper-Knoten im Cluster nacheinander neu.
- Führen Sie die ZooKeeper-Systemdiagnosebefehle auf jedem Knoten noch einmal aus und prüfen Sie, ob Sie den erwarteten Wert erhalten. .
Wenden Sie sich an den Apigee-Support, um die Ursache für dieses Problem zu beheben: Systemlast, wenn sie fortbesteht oder wenn das Problem durch einen Neustart nicht behoben wird.