Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Gejala
Tidak dapat memulai proses ZooKeeper.
Pesan error
Saat Anda mencoba memulai proses ZooKeeper, pesan error berikut akan ditampilkan yang menunjukkan bahwa ZooKeeper tidak dapat dimulai:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
Kemungkinan penyebab
Tabel berikut mencantumkan kemungkinan penyebab masalah ini:
Penyebab | Untuk |
---|---|
Myid ZooKeeper yang salah dikonfigurasi | Pengguna Edge Private Cloud |
Port ZooKeeper digunakan | Pengguna Edge Private Cloud |
ID proses dalam file apigee-zookeeper.pid salah | Pengguna Edge Private Cloud |
Kegagalan Pemilu Pemimpin ZooKeeper | Pengguna Edge Private Cloud |
Klik tautan dalam tabel untuk melihat kemungkinan penyelesaian masalah tersebut.
Myid ZooKeeper yang salah dikonfigurasi
Bagian berikut memberikan gambaran umum tentang {i>file<i} {i>myid<i} dan menjelaskan cara mendiagnosis dan menyelesaikan masalah kesalahan konfigurasi.
Ringkasan file myid
Di setiap node ZooKeeper, ada dua file:
- File
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
yang berisi daftar IP untuk semua node ZooKeeper di cluster.Misalnya, jika
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
berisi elemen IP dari 3 node ZooKeeper sebagai bagian dari cluster sebagai berikut:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- File
/opt/apigee/data/apigee-zookeeper/data/myid
berisi satu baris yang sesuai dengan nomor server dari {i>node<i} ZooKeeper tertentu. Myid dari server 1 akan berisi teks "1" dan tidak ada lagi. Id harus unik dalam ansambel dan harus memiliki nilai antara 1 dan 255.Misalnya, di ZooKeeper server.1, File
/opt/apigee/data/apigee-zookeeper/data/myid
hanya boleh berisi teks 1 sebagaimana ditunjukkan di bawah ini:$ cat myid 1
Diagnosis
- Periksa log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
untuk yang sama. - Jika Anda melihat pesan WARN yang serupa dengan “Koneksi terputus untuk id #, my id = #”,
seperti yang ditunjukkan pada gambar di bawah ini, maka penyebab
yang mungkin untuk masalah ini adalah server #
di file {i>myid<i} salah
konfigurasi atau rusak.
[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)
- Periksa file
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
dan catat server.# untuk simpul ZooKeeper. - Periksa file
/opt/apigee/data/apigee-zookeeper/data/myid
dan lihat apakah teks dalam file ini cocok dengan server.# yang tercantum pada langkah #2. - Jika ada ketidakcocokan, berarti Anda telah mengidentifikasi penyebab ZooKeeper gagal memulai.
Resolusi
Jika file myid tidak dikonfigurasi dengan benar, edit file myid tersebut dan ganti nilainya ke teks yang benar mewakili parameter server.# di Zoo.cfg.
Port ZooKeeper sedang digunakan
Diagnosis
- Periksa log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
untuk yang sama. - Jika Anda melihat pengecualian
java.net.BindException: Address already in use
ketika mengikat ke porta #2181, seperti ditunjukkan dalam gambar di bawah ini, ini menunjukkan bahwa ZooKeeper porta 2181 sedang digunakan oleh proses lain. Oleh karena itu, ZooKeeper tidak dapat dimulai.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)
- Gunakan perintah netstat di bawah untuk mengonfirmasi bahwa ZooKeeper port 2181 benar-benar digunakan
oleh proses lain:
netstat -an | grep 2181
Resolusi
Jika port ZooKeeper 2181 masih digunakan, ikuti langkah-langkah di bawah untuk mengatasinya masalah:
- Gunakan perintah
netstat
untuk menemukan proses yang mempertahankan port 2181. Hentikan proses yang menggunakan ZooKeeper port 2181:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Bersihkan pid dan kunci file jika ada:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Mulai ulang ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ID proses dalam file apigee-zookeeper.pid salah
Saat Anda mencoba menghentikan/memulai ulang ZooKeeper, tindakan itu mungkin gagal karena
File apigee-zookeeper.pid
berisi pid yang lebih lama/salah dan bukan pid yang saat ini
menjalankan proses {i> ZooKeeper<i}. Ini dapat terjadi jika proses ZooKeeper
berhenti secara tidak terduga atau
tiba-tiba karena alasan tertentu dan file apigee-zookeeper.pid
tidak dihapus.
Diagnosis
- Dapatkan ID proses dari proses ZooKeeper yang sedang berjalan dengan menjalankan
Perintah
ps
:ps -ef | grep zookeeper
- Periksa apakah file
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
sudah ada. Jika ada, catat ID proses yang ditulis ke dalam file ini. - Bandingkan ID proses yang diambil dari langkah #1 dan #2. Jika mereka berbeda, maka penyebab
untuk masalah ini memiliki ID proses yang salah di
apigee-zookeeper.pid file.
Resolusi
- Edit file apigee-zookeeper.pid dan ganti ID proses yang salah dengan ID proses yang benar ID proses yang diperoleh dari perintah ps (langkah #1 di atas).
- Mulai ulang ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Kegagalan Pemilu Pemimpin ZooKeeper
Diagnosis
Untuk mendiagnosis:
- Periksa log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
untuk yang sama. - Periksa apakah ada perubahan konfigurasi yang dapat menyebabkan pemilihan ZooKeeper pemimpin untuk gagal.
- Periksa
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
dan pastikan semua ZooKeeper di cluster memiliki jumlah dan alamat IP yang tepat untuk parameter server.#. Perhatikan juga bahwa agar pemilihan pemimpin berhasil harus ada minimal 3 pemilih dan jumlah pemilih harus bernomor ganjil. Jika ada terlalu sedikit pemilih, seperti hanya 2 pemilih, tidak dapat mencapai kuorum untuk memutuskan pemimpin di antara hanya 2 pemilih.
Resolusi
Biasanya, kegagalan pemilihan ZooKeeper disebabkan oleh konfigurasi myid yang salah. Gunakan resolusi di ZooKeeper myid yang salah dikonfigurasi untuk mengatasi kegagalan pemilu.
Jika masalah berlanjut dan diperlukan diagnosis lebih lanjut, hubungi Dukungan Apigee Edge.