Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Krótki opis problemu
Problemy z łącznością w ZooKeeper mogą przejawiać się w różnych objawach, takich jak:
- Błędy wdrażania serwera proxy interfejsu API
- Wywołania interfejsu API zarządzania kończą się błędem 5XX
- Routery lub procesory wiadomości nie uruchamiają się
- Komponenty Analytics zgłaszają utratę połączenia z ZooKeeper w pliku system.logs
Komunikaty o błędach
Poniżej znajdziesz przykłady komunikatów o błędach, które można zaobserwować, gdy występuje utrata połączenia z węzłami ZooKeeper.
- Gdy wdrożenie serwera proxy interfejsu API spowoduje, że w logach serwera zarządzania jest zwracany poniższy błąd
Wystąpił błąd z powodu utraty połączenia 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
- Podczas uruchamiania routery i procesory wiadomości łączą się z ZooKeeper. Jeśli
problemy z łącznością z ZooKeeper, komponenty te nie rozpoczną się od następujących elementów:
błąd:
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]
- W interfejsie Edge może wyświetlić się następujący błąd oznaczający, że nie udało się sprawdzić
stan wdrożenia serwerów proxy API:
Error Fetching Deployments Error while checking path existence for path: path
Możliwe przyczyny
W tabeli poniżej znajdziesz możliwe przyczyny tego problemu:
Przyczyna | Dla: |
---|---|
Problem z połączeniem sieciowym w różnych centrach danych | Użytkownicy Edge Private Cloud |
Węzeł ZooKeeper nie obsługuje żądań | Użytkownicy Edge Private Cloud |
Kliknij odpowiedni link w tabeli, aby zobaczyć możliwe rozwiązania problemu.
Problem z połączeniem sieciowym w różnych centrach danych
Diagnostyka
Klaster ZooKeeper może mieć węzły obejmujące wiele regionów/centrów danych, takich jak DC-1 i DC-2. Typowa topologia DC w Apigee Edge 2 obejmuje:
- ZooKeeper walczy w wyborach 1, 2 i 3 osób w okręgu DC-1
- ZooKeeper 4 i 5 jako wyborcy, a ZooKeeper 6 jako obserwator w DC-2.
Jeśli region DC-1 ulegnie awarii lub połączenie sieciowe między DC-1 a DC-2 zostanie przerwane, Węzły ZooKeeper nie mogą wybierać nowego lidera w DC-2 i nie komunikują się z liderem. do węzła. Obserwatorzy ZooKeeper nie mogą wybrać nowego lidera, a dwóch pozostałych wyborców w DC-2 nie muszą uzyskać kworum co najmniej 3 węzłów wyborczych potrzebne do wyboru nowego lidera. Dlatego też ZooKeepers w DC-2 nie będzie w stanie przetworzyć żadnych żądań. Pozostałe węzły ZooKeeper w DC-2 będą nadal w pętli próbując nawiązać kontakt z wyborcami z ZooKeeper, aby znaleźć lidera.
Rozdzielczość
Zastosuj podane niżej rozwiązania, aby rozwiązać ten problem w określonej kolejności.
Jeśli mimo wykonania tych czynności nie możesz rozwiązać problemu, skontaktuj się z zespołem pomocy Apigee.
Rozwiązanie 1
- Skontaktuj się z administratorami sieci, aby rozwiązać problem z połączeniem sieciowym między między centrami danych.
- Kiedy zespół ZooKeeper jest w stanie komunikować się między centrami danych i wybierać ZooKeeper, węzły powinny być w dobrym stanie i mieć możliwość przetwarzania żądań.
Rozwiązanie 2
- Jeśli naprawa połączenia sieciowego może trochę potrwać, obejściem jest ponowne skonfigurowanie połączenia sieciowego
węzłów ZooKeeper w regionie, w którym nie działają. Na przykład ponownie skonfiguruj ZooKeeper
w DC-2, tak aby 3 węzły ZooKeeper w tym regionie były wyborcami, a następnie usunąć
server.#
wzoo.cfg
organizacji ZooKeepers z regionu DC-1.- W poniższym przykładzie
zoo.cfg
konfiguruje węzły dla 2 regionów, w których DC-1 używaus-ea
nazwy hostów wskazujące region USA-Wschodni i DC-2 używają nazw hostówus-wo
oznaczających region USA-Zachód. (UWAGA: wyświetlane są tylko istotne konfiguracje):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
W powyższym przykładzie skonfiguruj
zoo.cfg
w następujący sposób: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
- Za pomocą kodu z konfiguracją,
utwórz plik
/opt/apigee/customer/application/zookeeper.properties
z tymi elementami: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\
W powyższym przykładzie węzły us-east są usunięte, a węzły USA-zachód są awansowane do głosujących po usunięciu adnotacji
:observer
. - W poniższym przykładzie
- Utwórz kopię zapasową danych z urządzenia
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
i starych/opt/apigee/customer/application/zookeeper.properties
Te pliki zostaną użyte do przywrócenia ustawień domyślnych po utworzeniu kopii zapasowej połączenia sieciowego między centrami danych.
Wyłącz notację obserwatora dla węzła obserwatora. Aby to zrobić: Dodaj do góry
/opt/apigee/customer/application/zookeeper.properties
tę konfigurację:conf_zoo_peertype=
-
Zmodyfikuj plik
/opt/apigee/data/apigee-zookeeper/data/myid
w ten sposób:- W przypadku
server.1
zmień wpis wewnątrzmyid
z 4 na 1. - W przypadku
server.2
zmień wartośćmyid
z 5 na 2. - W przypadku
server.3
zmień wartośćmyid
z 6 na 3.
- W przypadku
- Ponownie uruchom węzły ZooKeeper w regionie, w którym skonfigurowano ponownie ZooKeeper. klastra.
- Powtórz powyższą konfigurację od kroków 1b do 5 we wszystkich węzłach ZooKeeper w DC-2.
- Sprawdź, czy węzły działają z użyciem najlepszego rozwiązania:
$ 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
Wynik tego polecenia będzie zawierał wiersz z tekstem „mode” , a następnie „lider” jeśli jest liderem lub „obserwatorem” jeśli jest on obserwatorem.
Po ponownym ustanowieniu sieci między centrami danych konfiguracje ZooKeeper zmiany można cofnąć w węzłach ZooKeeper w DC-2.
Rozwiązanie 3
- Jeśli węzły ZooKeeper w klastrze nie zostały uruchomione, uruchom je ponownie.
- Sprawdź dzienniki ZooKeeper, aby ustalić, dlaczego węzeł ZooKeeper uległ awarii.
Dzienniki ZooKeeper są dostępne w następującym katalogu:
$ 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
- Skontaktuj się z zespołem pomocy Apigee i podaj ZooKeeper loguje się w celu rozwiązania problemu z każdym węzłam ZooKeeper, który mógł zostać zatrzymany.
Węzeł ZooKeeper nie obsługuje żądań
Węzeł ZooKeeper w zestawie może stać się nieprawidłowy i nie odpowiadać klientowi. żądań. Możliwe przyczyny:
- Węzeł został zatrzymany bez ponownego uruchomienia.
- Węzeł został zrestartowany bez włączonego automatycznego uruchamiania.
- Obciążenie systemu w węźle spowodowało jego spadek lub nieprawidłowe działanie.
Diagnostyka
- Wykonaj następujące polecenia kontroli stanu ZooKeeper w każdym z węzłów ZooKeeper i
sprawdź dane wyjściowe:
-
$ echo "ruok" | nc localhost 2181
Przykładowe dane wyjściowe:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Sprawdź tryb, aby określić, czy węzeł ZooKeeper jest liderem czy obserwatorem.
Przykładowe dane wyjściowe dla węzła ZooKeeper „wszystko w jednym”:
$ 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
To polecenie zawiera listę zmiennych ZooKeeper, których można użyć do sprawdzenia stanu gromady ZooKeeper.
Przykładowe dane wyjściowe:
$ 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
To polecenie wyświetla statystyki dotyczące wydajności i połączonych klientów.
Przykładowe dane wyjściowe:
$ 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
To polecenie wyświetla rozszerzone informacje o połączeniach ZooKeeper.
Przykładowe dane wyjściowe:
$ 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)
Jeśli któreś z 3 ostatnich poleceń kontroli stanu wyświetla ten komunikat:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Wskazuje on, że konkretne węzły ZooKeeper nie obsługują żądań.
-
- Sprawdź dzienniki ZooKeeper w konkretnym węźle i spróbuj znaleźć wszelkie błędy, które powodują
ZooKeeper na to. Dzienniki ZooKeeper są dostępne w następującym katalogu:
$ 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
Rozdzielczość
- Ponownie uruchamiaj po kolei wszystkie pozostałe węzły ZooKeeper w klastrze.
- Uruchom ponownie polecenia kontroli stanu ZooKeeper w każdym węźle i sprawdź, czy uzyskasz oczekiwane dane wyjściowe.
Skontaktuj się z zespołem pomocy Apigee, aby rozwiązać problem i jeśli ponowne uruchomienie systemu nie rozwiąże problemu.