Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Sintomo
Impossibile avviare il processo ZooKeeper.
Messaggi di errore
Quando tenti di avviare il processo di 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
Nella tabella seguente sono elencate le possibili cause di questo problema:
Causa | Per |
---|---|
Myid ZooKeeper configurato in modo errato | Utenti Edge Private Cloud |
Porta ZooKeeper in uso | Utenti Edge Private Cloud |
ID di processo errato nel file apigee-zookeeper.pid | Utenti Edge Private Cloud |
Errore durante le elezioni leader di ZooKeeper | Utenti Edge Private Cloud |
Fai clic su un link nella tabella per visualizzare le possibili soluzioni alla causa.
Myid ZooKeeper configurato in modo errato
Le seguenti sezioni forniscono una panoramica del file myid e descrivono come diagnosticare e risolvere i problemi di configurazione errata.
Panoramica del file myid
Su ogni nodo di ZooKeeper sono presenti due file:
- Il file
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
che contiene un elenco di IP per tutti i nodi ZooKeeper nel cluster.Ad esempio, se
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
contiene il parametro 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/myid
contiene una singola riga di che corrisponde al numero di server di quel particolare nodo ZooKeeper. The myid di 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, la proprietà Il file
/opt/apigee/data/apigee-zookeeper/data/myid
deve contenere solo il testo 1 come mostrato di seguito:$ cat myid 1
Diagnosi
- Controlla il log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
per errori. - Se viene visualizzato un messaggio WARN simile a "Connessione interrotta per ID #, mio ID = #",
come illustrato nella figura seguente, la possibile causa potrebbe essere che il server #
nel file myid non è configurato correttamente 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.cfg
e prendi nota delle server.# per il nodo ZooKeeper attuale. - Controlla il file
/opt/apigee/data/apigee-zookeeper/data/myid
e verifica se il testo in questo file corrisponde al server.# indicato nel passaggio #2. - Se c'è una mancata corrispondenza, significa che hai identificato la causa del mancato funzionamento di ZooKeeper. per iniziare.
Risoluzione
Se il file myid non è configurato correttamente, modificalo e sostituisci il valore con un testo corretto che rappresenta il parametro server.# nel zoo.cfg.
Porta ZooKeeper in uso
Diagnosi
- Controlla il log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
per errori. - Se noti l'eccezione
java.net.BindException: Address already in use
mentre è associato alla porta #2181, come mostrato nella figura seguente, indica che lo ZooKeeper la porta 2181 è utilizzata da un altro processo. Di conseguenza, ZooKeeper non può essere avviato.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 in uso
con un altro processo:
netstat -an | grep 2181
Risoluzione
Se la porta 2181 di ZooKeeper è ancora in uso, segui questi passaggi per risolvere il problema problema:
- Utilizza il comando
netstat
per trovare il processo che mantiene 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
- Pulisci i file PID e Blocca, se presenti:
/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 di processo errato nel file apigee-zookeeper.pid
Quando tenti di arrestare/riavviare ZooKeeper, l'operazione potrebbe non riuscire perché
apigee-zookeeper.pid
file contiene PID obsoleto/non corretto e non quello del file attuale
che esegue il processo ZooKeeper. Questo può accadere se il processo ZooKeeper si è arrestato in modo imprevisto o
improvvisamente per qualche motivo e il file apigee-zookeeper.pid
non è stato eliminato.
Diagnosi
- Ottieni l'ID del processo ZooKeeper attualmente in esecuzione eseguendo il comando
Comando
ps
:ps -ef | grep zookeeper
- Controlla se il file
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
esiste già. Se esiste, annota l'ID di processo scritto in questo file. - Confronta gli ID di processo presi ai passaggi 1 e 2. Se ci sono differenze, la causa
per questo problema è avere un ID processo errato in
apigee-zookeeper.pid file.
Risoluzione
- Modifica il file apigee-zookeeper.pid e sostituisci l'ID di processo errato con quello corretto ID processo ottenuto dal comando ps (passaggio 1 sopra).
- Riavvia ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Errore elettorale leader di ZooKeeper
Diagnosi
Per eseguire la diagnosi:
- Controlla il log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
per errori. - Controlla se sono state apportate modifiche alla configurazione che potrebbero causare l'elezione del metodo ZooKeeper il leader fallisce.
- Controlla il
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
e assicurati che tutti Gli ZooKeeper nel cluster hanno il numero e gli indirizzi IP corretti per il parametro server.#. Inoltre, tieni presente che, affinché l'elezione dei leader abbia successo, è necessario che ci siano almeno 3 elettori e il numero di elettori deve essere dispari. Se il numero di elettori è troppo basso, ad esempio 2 elettori, non può giungere al quorum per decidere un leader tra soli due elettori.
Risoluzione
Generalmente, l'errore elettorale di ZooKeeper è causato da un myid configurato in modo errato. Utilizza la risoluzione in Configurazione errata di ZooKeeper myid per risolvere il problema delle elezioni.
Se il problema persiste e sono necessarie ulteriori diagnosi, contatta l'assistenza Apigee Edge.