Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Sintomo
Impossibile avviare il processo ZooKeeper.
Messaggi di errore
Quando tenti di avviare il processo ZooKeeper, viene restituito il seguente messaggio di errore che indica che non è stato possibile avviare ZooKeeper:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Possibili cause
La tabella seguente elenca le possibili cause di questo problema:
| Causa | Per |
|---|---|
| myid di ZooKeeper configurato in modo errato | Utenti di Edge Private Cloud |
| Porta di ZooKeeper in uso | Utenti di Edge Private Cloud |
| ID processo errato nel file apigee-zookeeper.pid | Utenti di Edge Private Cloud |
| Errore di elezione del leader di ZooKeeper | Utenti di Edge Private Cloud |
Fai clic su un link nella tabella per visualizzare le possibili risoluzioni per quella causa.
myid di ZooKeeper configurato in modo errato
Le sezioni seguenti forniscono una panoramica del file myid e descrivono come diagnosticare e risolvere i problemi di configurazione errata.
Panoramica del file myid
Su ogni nodo ZooKeeper sono presenti due file:
- Il file
/opt/apigee/apigee-zookeeper/conf/zoo.cfgche contiene un elenco di indirizzi IP per tutti i nodi ZooKeeper nel cluster.Ad esempio, se
/opt/apigee/apigee-zookeeper/conf/zoo.cfgcontiene gli indirizzi IP di 3 nodi ZooKeeper che fanno parte del cluster come segue:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- Il file
/opt/apigee/data/apigee-zookeeper/data/myidcontiene una singola riga di testo che corrisponde al numero del server del nodo ZooKeeper specifico. Il file myid del server 1 conterrà il testo "1" e nient'altro. L'ID deve essere univoco all'interno dell'insieme e deve avere un valore compreso tra 1 e 255.Ad esempio, sul server ZooKeeper.1, il
/opt/apigee/data/apigee-zookeeper/data/myidfile deve contenere solo il testo 1 come mostrato di seguito:$ cat myid 1
Diagnosi
- Controlla il log di ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logper errori. - Se vedi il messaggio WARN simile a "Connection broken for id #, my id = #",
come mostrato nella figura seguente, la possibile causa di questo problema potrebbe essere che il server #
nel file myid è configurato in modo errato o danneggiato.
[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)
- Controlla il file
/opt/apigee/apigee-zookeeper/conf/zoo.cfge annota il server.# per il nodo ZooKeeper corrente. - Controlla il file
/opt/apigee/data/apigee-zookeeper/data/myide verifica se il testo in questo file corrisponde al server.# annotato nel passaggio 2. - Se c'è una mancata corrispondenza, hai identificato la causa del mancato avvio di ZooKeeper.
Risoluzione
Se il file myid è configurato in modo errato, modificalo e sostituisci il valore con un testo corretto che rappresenta il parametro server.# in zoo.cfg.
Porta di ZooKeeper in uso
Diagnosi
- Controlla il log di ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logper errori. - Se noti l'eccezione
java.net.BindException: Address already in usedurante l'associazione alla porta #2181, come mostrato nella figura seguente, significa che la porta 2181 di ZooKeeper è utilizzata da un altro processo. Di conseguenza, non è stato possibile avviare 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)
- Utilizza il seguente comando netstat per verificare che la porta 2181 di ZooKeeper sia effettivamente utilizzata
da un altro processo:
netstat -an | grep 2181
Risoluzione
Se la porta 2181 di ZooKeeper è ancora in uso, segui i passaggi riportati di seguito per risolvere il problema:
- Utilizza il comando
netstatper trovare il processo che utilizza la porta 2181. Termina il processo che utilizza la porta 2181 di ZooKeeper:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Elimina i file pid e di blocco, se esistenti:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Riavvia ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ID processo errato nel file apigee-zookeeper.pid
Quando tenti di arrestare/riavviare ZooKeeper, l'operazione potrebbe non riuscire perché il
apigee-zookeeper.pid file contiene un pid precedente/errato e non quello del processo ZooKeeper attualmente
in esecuzione. Questo può accadere se il processo ZooKeeper è terminato in modo imprevisto o
improvviso per qualche motivo e il file apigee-zookeeper.pid non è stato eliminato.
Diagnosi
- Recupera l'ID processo del processo ZooKeeper attualmente in esecuzione eseguendo il
pscomando:ps -ef | grep zookeeper
- Verifica se esiste il file
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid. Se esiste, annota l'ID processo scritto in questo file. - Confronta gli ID processo recuperati nei passaggi 1 e 2. Se sono diversi, la causa
di questo problema è l'ID processo errato nel
apigee-zookeeper.pid file.
Risoluzione
- Modifica il file apigee-zookeeper.pid e sostituisci l'ID processo errato con l'ID processo corretto ottenuto dal comando ps (passaggio 1 sopra).
- Riavvia ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Errore di elezione del leader di ZooKeeper
Diagnosi
Per la diagnosi:
- Controlla il log di ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logper errori. - Verifica se sono state apportate modifiche alla configurazione che potrebbero causare l'errore di elezione del leader di ZooKeeper.
- Controlla
/opt/apigee/apigee-zookeeper/conf/zoo.cfge assicurati che tutti i nodi ZooKeeper nel cluster abbiano il numero e gli indirizzi IP corretti per il parametro server.#. Tieni presente che, affinché l'elezione del leader vada a buon fine, sono necessari almeno 3 votanti e il numero di votanti deve essere dispari. Se i votanti sono troppo pochi, ad esempio solo 2 votanti, non è possibile raggiungere un quorum per decidere un leader tra solo 2 votanti.
Risoluzione
In genere, l'errore di elezione di ZooKeeper è causato da un file myid configurato in modo errato. Utilizza la risoluzione in myid di ZooKeeper configurato in modo errato per risolvere l'errore di elezione.
Se il problema persiste e sono necessarie ulteriori diagnosi, contatta l'assistenza Apigee Edge.