Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Krótki opis problemu
Nie można uruchomić procesu ZooKeeper.
Komunikaty o błędach
Przy próbie uruchomienia procesu ZooKeeper zwracany jest następujący komunikat o błędzie: wskazujący, że nie można uruchomić programu ZooKeeper:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Możliwe przyczyny
W tabeli poniżej znajdziesz możliwe przyczyny tego problemu:
Przyczyna | Dla: |
---|---|
Błędnie skonfigurowany identyfikator ZooKeeper | Użytkownicy Edge Private Cloud |
Port ZooKeeper w użyciu | Użytkownicy Edge Private Cloud |
Nieprawidłowy identyfikator procesu w pliku apigee-zookeeper.pid | Użytkownicy Edge Private Cloud |
Niepowodzenie w wyborach na lidera zoologicznego | Użytkownicy Edge Private Cloud |
Kliknij odpowiedni link w tabeli, aby zobaczyć możliwe rozwiązania problemu.
Błędnie skonfigurowany identyfikator ZooKeeper
Poniższe sekcje zawierają omówienie pliku myid oraz sposoby diagnozowania i diagnozowania i rozwiązywać problemy z błędami konfiguracji.
Omówienie pliku myid
W każdym węźle ZooKeeper są dwa pliki:
- Plik
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
, który zawiera listę Adresy IP wszystkich węzłów ZooKeeper w klastrze.Jeśli na przykład
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
zawiera parametr Adresy IP 3 węzłów ZooKeeper należących do klastra w następujący sposób:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- Plik
/opt/apigee/data/apigee-zookeeper/data/myid
zawiera jeden wiersz odpowiadający numerowi serwera tego konkretnego węzła ZooKeeper. Myid firmy serwer 1 będzie zawierał tekst „1” i nic więcej. Identyfikator musi być niepowtarzalny w obrębie zestawu i powinny mieć wartość od 1 do 255.Na przykład w pliku ZooKeeper server.1 parametr
/opt/apigee/data/apigee-zookeeper/data/myid
plik powinien zawierać tylko tekst 1 jak poniżej:$ cat myid 1
Diagnostyka
- Sprawdź dziennik ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
pod kątem . - Jeśli pojawi się komunikat z ostrzeżeniem podobny do „Połączenie przerwane dla identyfikatora nr, mój identyfikator = #”,
jak widać na ilustracji poniżej, prawdopodobną przyczyną problemu może być to, że serwer #
w pliku myid jest nieprawidłowo skonfigurowany lub uszkodzony.
[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)
- Sprawdź plik
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
i zanotuj server.# dla bieżącego węzła ZooKeeper. - Sprawdź, czy w pliku
/opt/apigee/data/apigee-zookeeper/data/myid
znajduje się tekst jest zgodny z serwerem.# podanym w kroku 2. - Jeśli informacje są nieprawidłowe, oznacza to, że zostały już przez Ciebie określone przyczyny niepowodzenia aplikacji ZooKeeper. i rozpoczęcia odtwarzania.
Rozdzielczość
Jeśli plik myid jest nieprawidłowo skonfigurowany, zmodyfikuj plik myid i zastąp jego wartość poprawny tekst reprezentujący parametr server.# w zoo.cfg.
Używany port ZooKeeper
Diagnostyka
- Sprawdź dziennik ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
dla . - Jeśli zauważysz wyjątek
java.net.BindException: Address already in use
z portem 2181, jak widać na ilustracji poniżej, wskazuje, że ZooKeeper Port 2181 jest używany przez inny proces. Dlatego nie mogliśmy uruchomić programu ZooKeeper.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)
- Użyj poniższego polecenia netstat, aby potwierdzić, że port 2181 ZooKeeper jest rzeczywiście używany.
w inny sposób:
netstat -an | grep 2181
Rozdzielczość
Jeśli port 2181 ZooKeeper jest nadal używany, wykonaj poniższe czynności, aby rozwiązać ten problem problem:
- Za pomocą polecenia
netstat
znajdź proces, który blokuje port 2181. Wyłącz proces, który używa portu 2181 ZooKeeper:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Wyczyść pid i zablokuj pliki, jeśli istnieją:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Ponownie uruchom ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Nieprawidłowy identyfikator procesu w pliku apigee-zookeeper.pid
Próba zatrzymania/ponownego uruchomienia programu ZooKeeper może się zakończyć niepowodzeniem, ponieważ
Plik apigee-zookeeper.pid
zawiera starszy/nieprawidłowy pid, a nie plik z aktualnie
i uruchomić proces ZooKeeper. Może się tak zdarzyć, jeśli proces ZooKeeper został nieoczekiwanie zakończony lub
nagle z jakiegoś powodu plik apigee-zookeeper.pid
nie został usunięty.
Diagnostyka
- Uzyskaj identyfikator aktualnie uruchomionego procesu ZooKeeper, uruchamiając polecenie
Polecenie
ps
:ps -ef | grep zookeeper
- Sprawdź, czy plik
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
istnieje. Jeśli proces istnieje, zapisz identyfikator procesu zapisany w tym pliku. - Porównaj identyfikatory procesów uzyskane w krokach 1 i 2. Jeśli są różne, przyczyna
w przypadku tego problemu ma nieprawidłowy identyfikator procesu w
apigee-zookeeper.pid file.
Rozdzielczość
- Edytuj plik apigee-zookeeper.pid i zastąp nieprawidłowy identyfikator procesu prawidłowym. identyfikator procesu uzyskany z polecenia ps (krok 1 powyżej).
- Ponownie uruchom ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Niepowodzenie wyborów lidera ZooKeeper
Diagnostyka
Aby zdiagnozować:
- Sprawdź dziennik ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
pod kątem . - Sprawdź, czy nie nastąpiły zmiany w konfiguracji, które mogłyby spowodować wybór programu ZooKeeper do na porażkę.
- Sprawdź
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
i upewnij się, że wszystkie Obiekty ZooKeepers w klastrze mają odpowiednią liczbę i adresy IP dla parametru server.#. Pamiętaj też, że aby wybory na lidera zakończą się sukcesem, musisz mieć co najmniej 3 głosów a liczba głosujących powinna być liczbą nieparzystą. Jeśli jest zbyt mało wyborców, np. tylko 2 wyborców nie może dojść do kworum, aby wyłonić lidera spośród zaledwie 2 głosujących.
Rozdzielczość
Zwykle niepowodzenie wyborów w ZooKeeper jest spowodowane nieprawidłowo skonfigurowanym identyfikatorem myid. Użyj rozdzielczości w Nieprawidłowo skonfigurowany identyfikator myid ZooKeeper w odpowiedzi na niepowodzenie wyborów.
Jeśli problem nie ustąpi i potrzebna jest dalsza diagnoza, skontaktuj się z zespołem pomocy Apigee Edge.