Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
ZooKeeper bağlantı sorunları, aşağıdakiler gibi farklı belirtilerle ortaya çıkabilir:
- API proxy'si dağıtım hataları
- Management API çağrıları 5XX hatalarıyla başarısız oluyor
- Yönlendiriciler veya ileti işlemciler başlatılamıyor
- Analytics bileşenleri, system.logs dosyasında ZooKeeper bağlantı kaybını bildiriyor
Hata mesajları
Aşağıda, ZooKeeper düğümlerine bağlantı kaybı olduğunda görülebilecek hata mesajlarının örnekleri verilmiştir.
- Bir API proxy'si dağıtımı, ZooKeeper bağlantısı kaybı nedeniyle başarısız olduğunda Yönetim Sunucusu günlüklerinde aşağıdaki hata döndürülür:
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
- Başlangıç sırasında yönlendiriciler ve ileti işlemciler ZooKeeper'a bağlanır. ZooKeeper ile bağlantı sorunları varsa bu bileşenler aşağıdaki hatayla başlatılamaz:
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]
- Edge kullanıcı arayüzünde, API proxy'lerinin dağıtım durumu kontrol edilemediğini belirten aşağıdaki hata gösterilebilir:
Error Fetching Deployments Error while checking path existence for path: path
Olası nedenler
Aşağıdaki tabloda bu sorunun olası nedenleri listelenmiştir:
| Neden | Şunun için: |
|---|---|
| Farklı veri merkezlerinde ağ bağlantısı sorunu | Edge Private Cloud kullanıcıları |
| ZooKeeper düğümü isteklere hizmet vermiyor | Edge Private Cloud kullanıcıları |
Bu nedene yönelik olası çözümleri görmek için tablodaki bir bağlantıyı tıklayın.
Farklı veri merkezlerinde ağ bağlantısı sorunu
Teşhis
Bir ZooKeeper kümesi, DC-1 ve DC-2 gibi birden fazla bölgeye/veri merkezine yayılan düğümlere sahip olabilir. Tipik bir Apigee Edge 2 DC topolojisinde şunlar bulunur:
- DC-1'de seçmen olarak ZooKeeper sunucuları 1, 2 ve 3
- DC-2'de ZooKeeper 4 ve 5 seçmen, ZooKeeper 6 ise gözlemci olarak yer alıyor.
DC-1 bölgesi çökerse veya DC-1 ile DC-2 arasındaki ağ bağlantısı kesilirse ZooKeeper düğümleri DC-2'de yeni bir lider seçemez ve lider düğümle iletişim kuramaz. ZooKeeper gözlemcileri yeni bir lider seçemez ve DC-2'deki kalan iki seçmen, yeni bir lider seçmek için yeterli olan en az 3 seçmen düğümüne sahip değildir. Bu nedenle, DC-2'deki ZooKeeper'lar herhangi bir isteği işleme alamayacak. DC-2'deki kalan ZooKeeper düğümleri, lideri bulmak için ZooKeeper seçmenlerine tekrar bağlanmayı denemeye devam eder.
Çözünürlük
Bu sorunu gidermek için aşağıdaki çözümleri belirtilen sırayla uygulayın.
Bu çözümleri denedikten sonra sorunu çözemezseniz lütfen Apigee Destek Ekibi ile iletişime geçin.
1. çözüm
- Veri merkezleri arasındaki ağ bağlantısı sorununu gidermek için ağ yöneticilerinizle birlikte çalışın.
- ZooKeeper topluluğu veri merkezleri arasında iletişim kurabildiğinde ve bir ZooKeeper lideri seçtiğinde düğümler sağlıklı hale gelmeli ve istekleri işleyebilmelidir.
2. çözüm
- Ağ bağlantısının onarılması zaman alacaksa geçici çözüm olarak, ZooKeeper düğümlerini bulundukları bölgede yeniden yapılandırabilirsiniz. Örneğin, DC-2'deki ZooKeeper kümesini bu bölgedeki 3 ZooKeeper düğümünün tamamı seçmen olacak şekilde yeniden yapılandırın ve DC-1 bölgesindeki ZooKeeper'ların
zoo.cfgbölümündeserver.#öğesini kaldırın.- Aşağıdaki örnekte,
zoo.cfg, düğümleri 2 bölge için yapılandırır. Bu bölgelerden DC-1, ABD-Doğu bölgesini belirtenus-eaana makine adlarını kullanırken DC-2, ABD-Batı bölgesini belirtenus-woana makine adlarını kullanır. (NOT: Yalnızca alakalı yapılandırmalar gösterilir):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
Yukarıdaki örnekte,
zoo.cfgöğesini aşağıdaki şekilde yeniden yapılandırın: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
- Yapılandırmalı kod kullanarak,
aşağıdaki bilgileri içeren bir
/opt/apigee/customer/application/zookeeper.propertiesdosyası oluşturun: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\
Yukarıdaki örnekte, US-East'teki düğümler kaldırılıyor ve
:observeraçıklaması kaldırıldığında US-West düğümleri seçmen olarak yükseltiliyor. - Aşağıdaki örnekte,
/opt/apigee/apigee-zookeeper/conf/zoo.cfgve eski/opt/apigee/customer/application/zookeeper.propertiesyedekleyin.Bu dosyalar, veri merkezleri arasındaki ağ bağlantısı tekrar kurulduğunda varsayılanları geri yüklemek için kullanılır.
Gözlemci düğümü için gözlemci notunu devre dışı bırakın. Bunu yapmak için
/opt/apigee/customer/application/zookeeper.propertiesdosyasının en üstüne aşağıdaki yapılandırmayı ekleyin:conf_zoo_peertype=
-
/opt/apigee/data/apigee-zookeeper/data/myiddosyasını aşağıdaki gibi düzenleyin:server.1içinmyidiçindeki girişi 4'ten 1'e değiştirin.server.2içinmyiddeğerini 5'ten 2'ye değiştirin.server.3içinmyiddeğerini 6'dan 3'e değiştirin.
- ZooKeeper kümesini yeniden yapılandırdığınız bölgedeki ZooKeeper düğümlerini yeniden başlatın.
- Yukarıdaki yapılandırmayı 1b adımından 5. adıma kadar DC-2'deki tüm ZooKeeper düğümlerinde tekrarlayın.
- Düğümlerin bir liderle birlikte çalıştığını doğrulayın:
$ 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
Bu komutun çıkışında, liderse "mode" kelimesinin ardından "leader", takipçiyse "follower" kelimesinin yer aldığı bir satır bulunur.
Veri merkezleri arasındaki ağ yeniden kurulduğunda, ZooKeeper yapılandırmaları değişiklikleri DC-2'deki ZooKeeper düğümlerinde geri alınabilir.
3. çözüm
- Kümedeki ZooKeeper düğümleri başlatılmamışsa yeniden başlatın.
- ZooKeeper düğümünün neden çöktüğünü belirlemek için ZooKeeper günlüklerini kontrol edin.
ZooKeeper günlükleri aşağıdaki dizinde bulunur:
$ 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
- Durdurulmuş olabilecek ZooKeeper düğümlerinin nedenini gidermek için Apigee Destek Ekibi ile iletişime geçin ve ZooKeeper günlüklerini paylaşın.
ZooKeeper düğümü isteklere hizmet vermiyor
Topluluktaki bir ZooKeeper düğümü sağlıksız hale gelebilir ve istemci isteklerine yanıt veremeyebilir. Bunun nedeni aşağıdakilerden biri olabilir:
- Düğüm yeniden başlatılmadan durduruldu.
- Düğüm, otomatik başlatma etkinleştirilmeden yeniden başlatıldı.
- Düğümdeki sistem yükü, düğümün kapanmasına veya sağlıksız hale gelmesine neden oldu.
Teşhis
- ZooKeeper düğümlerinin her birinde aşağıdaki ZooKeeper durum denetimi komutlarını çalıştırın ve çıkışı kontrol edin:
-
$ echo "ruok" | nc localhost 2181
Örnek çıkış:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
ZooKeeper düğümünün lider mi yoksa takipçi mi olduğunu belirlemek için modu kontrol edin.
Hepsi bir arada tek bir ZooKeeper düğümü için örnek çıkış:
$ 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
Bu komut, ZooKeeper kümesinin durumunu kontrol etmek için kullanılabilecek ZooKeeper değişkenlerini listeler.
Örnek çıkış:
$ 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
Bu komut, performans ve bağlı istemcilerle ilgili istatistikleri listeler.
Örnek çıkış:
$ 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
Bu komut, ZooKeeper bağlantılarıyla ilgili ayrıntılı bilgi verir.
Örnek çıkış:
$ 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)
Son 3 durum denetimi komutundan herhangi biri aşağıdaki mesajı gösteriyorsa:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Ardından, belirli ZooKeeper düğümlerinin isteklere hizmet vermediğini belirtir.
-
- Belirli düğümdeki ZooKeeper günlüklerini kontrol edin ve ZooKeeper'ın çalışmamasına neden olan hataları bulmaya çalışın. ZooKeeper günlükleri aşağıdaki dizinde bulunur:
$ 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
Çözünürlük
- Kümedeki diğer tüm ZooKeeper düğümlerini tek tek yeniden başlatın.
- Her düğümde ZooKeeper durum kontrolü komutlarını yeniden çalıştırın ve beklenen çıktıyı alıp almadığınızı kontrol edin.
Sistem yükünün nedenini gidermek için sorun devam ederse veya yeniden başlatma sorunu çözmezse Apigee Destek Ekibi ile iletişime geçin.