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 salah dikonfigurasi | Pengguna Edge Private Cloud |
| Port ZooKeeper sedang digunakan | Pengguna Edge Private Cloud |
| ID proses salah dalam file apigee-zookeeper.pid | Pengguna Edge Private Cloud |
| Kegagalan Pemilihan Pemimpin ZooKeeper | Pengguna Edge Private Cloud |
Klik link dalam tabel untuk melihat kemungkinan solusi penyebab tersebut.
myid ZooKeeper yang salah dikonfigurasi
Bagian berikut memberikan ringkasan file myid dan menjelaskan cara mendiagnosis serta menyelesaikan masalah kesalahan konfigurasi.
Ringkasan file myid
Di setiap node ZooKeeper, ada dua file:
- File
/opt/apigee/apigee-zookeeper/conf/zoo.cfgyang berisi daftar IP untuk semua node ZooKeeper di cluster.Misalnya, jika
/opt/apigee/apigee-zookeeper/conf/zoo.cfgberisi IP dari 3 node ZooKeeper yang merupakan 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/myidberisi satu baris teks yang sesuai dengan nomor server node ZooKeeper tertentu tersebut. myid server 1 akan berisi teks "1" dan tidak ada yang lain. ID harus unik dalam ansambel dan harus memiliki nilai antara 1 dan 255.Misalnya, di server ZooKeeper.1, file
/opt/apigee/data/apigee-zookeeper/data/myidhanya boleh berisi teks 1 seperti yang ditunjukkan di bawah:$ cat myid 1
Diagnosis
- Periksa log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.loguntuk mengetahui error. - Jika Anda melihat pesan PERINGATAN yang mirip dengan “Connection broken for id #, my id = #”,
seperti yang ditunjukkan pada gambar di bawah, kemungkinan penyebab masalah ini adalah server #
dalam file myid salah dikonfigurasi 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.cfgdan catat server.# untuk node ZooKeeper saat ini. - Periksa file
/opt/apigee/data/apigee-zookeeper/data/myiddan lihat apakah teks dalam file ini cocok dengan server.# yang dicatat di langkah #2. - Jika ada ketidakcocokan, Anda telah mengidentifikasi penyebab ZooKeeper gagal dimulai.
Resolusi
Jika file myid dikonfigurasi dengan salah, edit file myid dan ganti nilai dengan teks yang benar yang merepresentasikan parameter server.# di zoo.cfg.
Port ZooKeeper yang sedang digunakan
Diagnosis
- Periksa log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.loguntuk mengetahui error. - Jika Anda melihat pengecualian
java.net.BindException: Address already in usesaat mengikat ke port #2181, seperti yang ditunjukkan pada gambar di bawah, hal ini menunjukkan bahwa port 2181 ZooKeeper 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 port ZooKeeper 2181 memang sedang digunakan oleh proses lain:
netstat -an | grep 2181
Resolusi
Jika port 2181 ZooKeeper masih digunakan, ikuti langkah-langkah di bawah untuk mengatasi masalah ini:
- Gunakan perintah
netstatuntuk menemukan proses yang menggunakan port 2181. Hentikan proses yang menggunakan port 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
- Bersihkan file pid dan lock 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 salah dalam file apigee-zookeeper.pid
Saat Anda mencoba menghentikan/memulai ulang ZooKeeper, tindakan tersebut mungkin gagal karena
file apigee-zookeeper.pid berisi pid yang lebih lama/salah, bukan pid dari proses ZooKeeper yang sedang berjalan. Hal ini dapat terjadi jika proses ZooKeeper berakhir secara tiba-tiba atau
mendadak karena beberapa alasan dan file apigee-zookeeper.pid tidak dihapus.
Diagnosis
- Dapatkan ID proses ZooKeeper yang sedang berjalan dengan menjalankan perintah
ps:ps -ef | grep zookeeper
- Periksa apakah file
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pidada. Jika ada, catat ID proses yang ditulis ke dalam file ini. - Bandingkan ID proses yang diambil dari langkah #1 dan #2. Jika keduanya berbeda, penyebab
masalah ini adalah 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 yang diperoleh dari perintah ps (langkah #1 di atas).
- Mulai ulang ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Kegagalan Pemilihan Pemimpin ZooKeeper
Diagnosis
Untuk mendiagnosis:
- Periksa log ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.loguntuk mengetahui error. - Periksa apakah ada perubahan konfigurasi yang dapat menyebabkan pemilihan pemimpin ZooKeeper gagal.
- Periksa
/opt/apigee/apigee-zookeeper/conf/zoo.cfgdan pastikan semua ZooKeeper dalam cluster memiliki jumlah dan alamat IP yang tepat untuk parameter server.#. Perhatikan juga bahwa agar pemilihan pemimpin berhasil, minimal harus ada 3 pemilih dan jumlah pemilih harus ganjil. Jika jumlah pemilih terlalu sedikit, misalnya hanya 2 pemilih, maka tidak dapat mencapai kuorum untuk memutuskan pemimpin di antara 2 pemilih saja.
Resolusi
Biasanya, kegagalan pemilihan ZooKeeper disebabkan oleh myid yang salah dikonfigurasi. Gunakan resolusi di Misconfigured ZooKeeper myid untuk mengatasi kegagalan pemilihan.
Jika masalah berlanjut dan diagnosis lebih lanjut diperlukan, hubungi Dukungan Apigee Edge.