Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Gejala
Masalah konektivitas ZooKeeper dapat muncul sebagai gejala yang berbeda seperti:
- Error deployment proxy API
- Panggilan API Pengelolaan gagal dengan error 5XX
- Router atau Message Processor gagal dimulai
- Komponen Analytics melaporkan kehilangan koneksi ZooKeeper di system.logs
Pesan error
Berikut adalah contoh pesan error yang mungkin diamati saat terjadi kehilangan koneksi ke node ZooKeeper.
- Error berikut ditampilkan dalam log Server Pengelolaan saat deployment Proxy API
gagal karena Kehilangan Koneksi ZooKeeper:
org: env: main INFO ZOOKEEPER - ZooKeeperServiceImpl.exists() : Retry path existence path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR ZOOKEEPER - ZooKeeperServiceImpl.exists() : Could not detect existence of path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable , reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR KERNEL.DEPLOYMENT - ServiceDeployer.startService() : ServiceDeployer.deploy() : Got a life cycle exception while starting service [ServerRegistrationService, Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable] : com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorCheckingPathExis tence, message = Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, associated contexts = []} 2015-03-25 10:22:39,811 org: env: main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : EventService com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:339) ~[zookeeper-1.0.0.jar:na] at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists( ZooKeeperServiceImpl.java:323) ~[zookeeper-1.0.0.jar:na] at ... snipped
- Selama startup, Router dan Message Processor terhubung ke ZooKeeper. Jika ada
masalah konektivitas dengan ZooKeeper, komponen ini akan gagal dimulai dengan error berikut:
2017-08-01 23:20:00,404 CuratorFramework-0 ERROR o.a.c.f.i.CuratorFrameworkImpl - CuratorFrameworkImpl.logError() : Background operation retry gave up org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkBackgroundRetry(CuratorFrameworkImpl.java:710) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:827) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275) [curator-framework-2.5.0.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
- UI New Edge mungkin menampilkan error berikut yang menunjukkan bahwa UI tersebut
tidak dapat memeriksa status deployment proxy API:
Error Fetching Deployments Error while checking path existence for path: path
Kemungkinan penyebab
Tabel berikut mencantumkan kemungkinan penyebab masalah ini:
| Penyebab | Untuk |
|---|---|
| Masalah konektivitas jaringan di berbagai pusat data | Pengguna Edge Private Cloud |
| Node ZooKeeper tidak menayangkan permintaan | Pengguna Edge Private Cloud |
Klik link di tabel untuk melihat kemungkinan resolusi penyebab tersebut.
Masalah konektivitas jaringan di berbagai pusat data
Diagnosis
Cluster ZooKeeper mungkin memiliki node yang mencakup beberapa region/pusat data, seperti DC-1 dan DC-2. Topologi Apigee Edge 2 DC yang umum akan memiliki:
- Server ZooKeeper 1, 2, dan 3 sebagai pemilih di DC-1
- ZooKeeper 4 dan 5 sebagai pemilih dan ZooKeeper 6 sebagai pengamat di DC-2.
Jika region DC-1 tidak berfungsi atau konektivitas jaringan antara DC-1 dan DC-2 terputus, maka node ZooKeeper tidak dapat memilih pemimpin baru di DC-2 dan gagal berkomunikasi dengan node pemimpin. Pengamat ZooKeeper tidak dapat memilih pemimpin baru dan dua pemilih yang tersisa di DC-2 tidak memiliki kuorum minimal 3 node pemilih untuk memilih pemimpin baru. Dengan demikian, ZooKeeper di DC-2 tidak akan dapat memproses permintaan apa pun. Node ZooKeeper yang tersisa di DC-2 akan terus melakukan loop untuk mencoba terhubung kembali ke pemilih ZooKeeper guna menemukan pemimpin.
Resolusi
Terapkan solusi berikut untuk mengatasi masalah ini dalam urutan yang ditentukan.
Jika Anda tidak dapat menyelesaikan masalah setelah mencoba solusi ini, hubungi Dukungan Apigee.
Solusi #1
- Hubungi administrator jaringan Anda untuk memperbaiki masalah konektivitas jaringan antara pusat data.
- Jika ensemble ZooKeeper dapat berkomunikasi di seluruh pusat data dan memilih pemimpin ZooKeeper, node akan menjadi sehat dan dapat memproses permintaan.
Solusi #2
- Jika perbaikan konektivitas jaringan memerlukan waktu, solusinya adalah mengonfigurasi ulang
node ZooKeeper di region tempat node tersebut tidak berfungsi. Misalnya, konfigurasi ulang cluster ZooKeeper
di DC-2 sehingga 3 node ZooKeeper di region ini semuanya adalah pemilih dan hapus
server.#dizoo.cfgZooKeeper dari region DC-1.- Pada contoh berikut,
zoo.cfgmengonfigurasi node untuk 2 region tempat DC-1 menggunakanus-eanama host yang menunjukkan region US-East dan DC-2 menggunakanus-wonama host yang menunjukkan region US-West. (CATATAN: Hanya konfigurasi yang relevan yang ditampilkan):server.1=zk01ea.us-ea.4.apigee.com:2888:3888 server.2=zk02ea.us-ea.4.apigee.com:2888:3888 server.3=zk03ea.us-ea.4.apigee.com:2888:3888 server.4=zk04wo.us-wo.4.apigee.com:2888:3888 server.5=zk05wo.us-wo.4.apigee.com:2888:3888 server.6=zk06wo.us-wo.4.apigee.com:2888:3888:observer
Pada contoh di atas, konfigurasi ulang
zoo.cfgsebagai berikut:server.1=zk04wo.us-wo.4.apigee.com:2888:3888 server.2=zk05wo.us-wo.4.apigee.com:2888:3888 server.3=zk06wo.us-wo.4.apigee.com:2888:3888
- Menggunakan kode dengan konfigurasi,
buat file
/opt/apigee/customer/application/zookeeper.propertiesdengan konten berikut:conf_zoo_quorum=server.1=zk04wo.us-wo.4.apigee.com:2888:3888\ \nserver.2=zk05wo.us-wo.4.apigee.com:2888:3888\ \nserver.3=zk06wo.us-wo.4.apigee.com:2888:3888\
Pada contoh di atas, node dari US-East dihapus, dan node US-West dipromosikan menjadi pemilih saat anotasi
:observerdihapus. - Pada contoh berikut,
- Cadangkan
/opt/apigee/apigee-zookeeper/conf/zoo.cfgdan lama/opt/apigee/customer/application/zookeeper.properties.File ini akan digunakan untuk memulihkan setelan default saat konektivitas jaringan kembali berfungsi antara pusat data.
Nonaktifkan notasi pengamat untuk node pengamat. Untuk melakukannya, tambahkan konfigurasi berikut ke bagian atas
/opt/apigee/customer/application/zookeeper.properties:conf_zoo_peertype=
-
Edit file
/opt/apigee/data/apigee-zookeeper/data/myidsebagai berikut:- Untuk
server.1, ubah entri di dalammyiddari 4 menjadi 1. - Untuk
server.2, ubahmyiddari 5 menjadi 2. - Untuk
server.3, ubahmyiddari 6 menjadi 3.
- Untuk
- Mulai ulang node ZooKeeper di region tempat Anda mengonfigurasi ulang cluster ZooKeeper.
- Ulangi konfigurasi di atas dari langkah #1b hingga langkah# 5 di semua node ZooKeeper di DC-2.
- Pastikan node berfungsi dengan pemimpin:
$ echo srvr | nc zk04wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk05wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk06wo.us-wo.4.apigee.com 2181
Output perintah ini akan berisi baris yang bertuliskan "mode" diikuti dengan "leader" jika itu adalah pemimpin, atau "follower" jika itu adalah pengikut.
Saat jaringan antara pusat data dibuat ulang, perubahan konfigurasi ZooKeeper dapat dikembalikan pada node ZooKeeper di DC-2.
Solusi #3
- Jika node ZooKeeper di cluster tidak dimulai, mulai ulang.
- Periksa log ZooKeeper untuk menentukan alasan node ZooKeeper tidak berfungsi.
Log ZooKeeper tersedia di direktori berikut:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
- Hubungi Dukungan Apigee dan berikan log ZooKeeper untuk memecahkan masalah penyebab node ZooKeeper yang mungkin telah dihentikan.
Node ZooKeeper tidak menayangkan permintaan
Node ZooKeeper dalam ensemble mungkin menjadi tidak sehat dan tidak dapat merespons permintaan klien permintaan. Hal ini dapat disebabkan karena:
- Node dihentikan tanpa dimulai ulang.
- Node di-reboot tanpa mengaktifkan mulai otomatis.
- Beban sistem pada node menyebabkan node tidak berfungsi atau menjadi tidak sehat.
Diagnosis
- Jalankan perintah pemeriksaan kesehatan ZooKeeper berikut di setiap node ZooKeeper dan
periksa outputnya:
-
$ echo "ruok" | nc localhost 2181
Contoh output:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Periksa mode untuk menentukan apakah node ZooKeeper adalah pemimpin atau pengikut.
Contoh output untuk node ZooKeeper tunggal dan lengkap:
$ echo srvr | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Latency min/avg/max: 0/0/88 Received: 4206601 Sent: 4206624 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo mntr | nc localhost 2181
Perintah ini mencantumkan variabel ZooKeeper yang dapat digunakan untuk memeriksa kesehatan cluster ZooKeeper.
Contoh output:
$ echo mntr | nc localhost 2181 zk_version 3.4.5-1392090, built on 09/30/2012 17:52 GMT zk_avg_latency 0 zk_max_latency 88 zk_min_latency 0 zk_packets_received 4206750 zk_packets_sent 4206773 zk_num_alive_connections 8 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 282 zk_watch_count 194 zk_ephemerals_count 1 zk_approximate_data_size 22960 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 4096
-
$ echo stat | nc localhost 2181
Perintah ini mencantumkan statistik tentang performa dan klien yang terhubung.
Contoh output:
$ echo stat | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /10.128.0.8:54152[1](queued=0,recved=753379,sent=753385) /10.128.0.8:53944[1](queued=0,recved=980269,sent=980278) /10.128.0.8:54388[1](queued=0,recved=457094,sent=457094) /10.128.0.8:54622[1](queued=0,recved=972938,sent=972938) /10.128.0.8:54192[1](queued=0,recved=150843,sent=150843) /10.128.0.8:44564[1](queued=0,recved=267332,sent=267333) /127.0.0.1:40820[0](queued=0,recved=1,sent=0) /10.128.0.8:53960[1](queued=0,recved=150844,sent=150844) Latency min/avg/max: 0/0/88 Received: 4206995 Sent: 4207018 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo cons | nc localhost 2181
Perintah ini memberikan detail tambahan tentang koneksi ZooKeeper.
Contoh output:
$ echo cons | nc localhost 2181 /127.0.0.1:40864[0](queued=0,recved=1,sent=0) /10.128.0.8:54152[1](queued=0,recved=753400,sent=753406,sid=0x15d521a96d40007, lop=PING,est=1500321588647,to=40000,lcxid=0x972e9,lzxid=0x745,lresp=1502334173174, llat=0,minlat=0,avglat=0,maxlat=26) /10.128.0.8:53944[1](queued=0,recved=980297,sent=980306,sid=0x15d521a96d40005, lop=PING,est=1500321544896,to=40000,lcxid=0xce92a,lzxid=0x745,lresp=1502334176055, llat=0,minlat=0,avglat=0,maxlat=23) /10.128.0.8:54388[1](queued=0,recved=457110,sent=457110,sid=0x15d521a96d4000a, lop=PING,est=1500321673852,to=40000,lcxid=0x4dbe3,lzxid=0x745,lresp=1502334174245, llat=0,minlat=0,avglat=0,maxlat=22) /10.128.0.8:54622[1](queued=0,recved=972967,sent=972967,sid=0x15d521a96d4000b, lop=PING,est=1500321890175,to=40000,lcxid=0xccc9d,lzxid=0x745,lresp=1502334182417, llat=0,minlat=0,avglat=0,maxlat=88) /10.128.0.8:54192[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40008, lop=PING,est=1500321591985,to=40000,lcxid=0x8,lzxid=0x745,lresp=1502334184475, llat=3,minlat=0,avglat=0,maxlat=19) /10.128.0.8:44564[1](queued=0,recved=267354,sent=267355,sid=0x15d521a96d4000d, lop=PING,est=1501606633426,to=40000,lcxid=0x356e2,lzxid=0x745,lresp=1502334182315, llat=0,minlat=0,avglat=0,maxlat=35) /10.128.0.8:53960[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40006, lop=PING,est=1500321547138,to=40000,lcxid=0x5,lzxid=0x745,lresp=1502334177036, llat=1,minlat=0,avglat=0,maxlat=20)
Jika salah satu dari 3 perintah pemeriksaan kesehatan terakhir menampilkan pesan berikut:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Hal ini menunjukkan bahwa node ZooKeeper tertentu tidak menayangkan permintaan.
-
- Periksa log ZooKeeper di node tertentu dan coba temukan error yang menyebabkan
ZooKeeper tidak berfungsi. Log ZooKeeper tersedia di direktori berikut:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
Resolusi
- Mulai ulang semua node ZooKeeper lainnya di cluster satu per satu.
- Jalankan kembali perintah pemeriksaan kesehatan ZooKeeper di setiap node dan lihat apakah Anda mendapatkan output yang diharapkan.
Hubungi Apigee Dukungan untuk memecahkan masalah penyebab beban sistem jika masalah berlanjut atau jika memulai ulang tidak menyelesaikan masalah.