Zookeeper Bağlantı Kaybı Hataları

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:

  1. API proxy'si dağıtım hataları
  2. Management API çağrıları 5XX hatalarıyla başarısız oluyor
  3. Yönlendiriciler veya Mesaj İşleyiciler başlatılamıyor
  4. Analytics bileşenleri raporu, system.logs'da ZooKeeper bağlantı kaybı içeriyor

Hata mesajları

Aşağıda, ZooKeeper düğümlerinde bağlantı kaybı olduğunda gözlemlenebilecek hata mesajı örnekleri verilmiştir.

  1. ZooKeeper bağlantısının kaybı nedeniyle API Proxy dağıtımı 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
    
  2. Başlatma sırasında Yönlendiriciler ve Mesaj İşleyiciler, ZooKeeper'a bağlanır. ZooKeeper'da bağlantı sorunları varsa bu bileşenler aşağıdaki hatayla başlayamaz:
    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]
    
  3. Edge kullanıcı arayüzü, API Proxy'lerinin dağıtım durumunu kontrol edemediğini belirten aşağıdaki hatayı görüntüleyebilir:
    Error Fetching Deployments
    Error while checking path existence for path: path
    

Olası nedenler

Aşağıdaki tabloda, bu sorunun olası nedenleri listelenmiştir:

Neden (Hedef müşteri) için
Farklı veri merkezlerindeki 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 ilişkin olası çözümleri görmek için tabloda ilgili bağlantıyı tıklayın.

Farklı veri merkezlerindeki ağ bağlantısı sorunu

Teşhis

Bir ZooKeeper kümesinin DC-1 ve DC-2 gibi birden fazla bölgeyi/veri merkezini kapsayan düğümleri olabilir. Tipik Apigee Edge 2 DC topolojisinde şunlar bulunur:

  • ZooKeeper'ın DC-1'de seçmen olarak 1, 2 ve 3 sunucuları
  • Oy verenler olarak ZooKeeper 4 ve 5, DC-2'de gözlemci olarak ZooKeeper 6.

DC-1 bölgesi kesilirse 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 öncü düğümle iletişim kuramaz. ZooKeeper gözlemcileri yeni bir lider seçemez ve DC-2'de kalan iki seçmen yeni bir lider seçmek için en az 3 seçmen düğümünün yeterli sayısına sahip değil. Bu nedenle, DC-2'deki ZooKeepers hiçbir isteği işleyemez. DC-2'deki kalan ZooKeeper düğümleri, lideri bulmak için ZooKeeper'daki oy verenlerle bağlantı kurma tekrar denemelerini döngüye almaya devam edecek.

Çözünürlük

Bu sorunu belirtilen sırayla ele almak için aşağıdaki çözümleri uygulayın.

Bu çözümleri denedikten sonra sorunu çözemiyorsanız lütfen Apigee Destek Ekibi ile iletişime geçin.

1. Çözüm

  1. Veri merkezleri arasındaki ağ bağlantısı sorununu onarmak için ağ yöneticilerinizle birlikte çalışın.
  2. ZooKeeper topluluğu veri merkezleri arasında iletişim kurabildiğinde ve bir ZooKeeper lideri seçebildiğinde düğümlerin iyi durumda olması ve istekleri işleyebilmesi gerekir.

2. Çözüm

  1. Ağ bağlantısının onarılması zaman alacaksa geçici bir çözüm, kapalı oldukları bölgedeki ZooKeeper düğümlerini yeniden yapılandırmaktır. Örneğin, DC-2'de ZooKeeper kümesini yeniden yapılandırarak bu bölgedeki 3 ZooKeeper düğümlerinin tamamının oy vermesini sağlayın ve ZooKeeper'ın zoo.cfg bölümündeki server.# öğesini DC-1 bölgesinden kaldırın.
    1. Aşağıdaki örnekte zoo.cfg, DC-1'in ABD-Doğu bölgesini belirten us-ea ana makine adlarını ve DC-2'nin ABD-Batı bölgesini belirten us-wo ana makine adlarını kullandığı 2 bölge için düğümleri yapılandırır. (NOT: Yalnızca ilgili 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 gibi 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
      
    2. Config with config dosyasını kullanarak aşağıdakiyle bir /opt/apigee/customer/application/zookeeper.properties dosyası 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ıda, :observer ek açıklaması kaldırıldığında ABD-Doğu düğümleri kaldırılmış ve ABD-Batı düğümleri seçmenlere yükseltilmiştir.

  2. /opt/apigee/apigee-zookeeper/conf/zoo.cfg adlı cihazı ve eski /opt/apigee/customer/application/zookeeper.properties yedeklemesini yapın.

    Veri merkezleri arasında ağ bağlantısı tekrar sağlandığında varsayılanları geri yüklemek için bu dosyalar kullanılır.

  3. Gözlemci düğümü için gözlemci gösterimini devre dışı bırakın. Bunu yapmak için /opt/apigee/customer/application/zookeeper.properties ürününün üst kısmına aşağıdaki yapılandırmayı ekleyin:

    conf_zoo_peertype=
  4. /opt/apigee/data/apigee-zookeeper/data/myid dosyasını aşağıdaki gibi düzenleyin:

    • server.1 için, myid içindeki girişi 4 yerine 1 olarak değiştirin.
    • server.2 için myid değerini 5 yerine 2 olarak değiştirin.
    • server.3 için myid değerini 6 yerine 3 olarak değiştirin.
  5. ZooKeeper kümesini yeniden yapılandırdığınız bölgedeki ZooKeeper düğümlerini yeniden başlatın.
  6. Yukarıdaki yapılandırmayı DC-2'deki tüm ZooKeeper düğümlerinde 1b adımından 5. adıma kadar tekrarlayın.
  7. Düğümlerin bir öncüyle ç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 sonucunda, "mode" (mod) yazan bir satır, liderse "lider", takipçi ise "follower" ifadesini içerir.

    Veri merkezleri arasındaki ağ yeniden kurulduğunda ZooKeeper yapılandırma değişiklikleri DC-2'deki ZooKeeper düğümlerinde geri alınabilir.

3. Çözüm

  1. Kümedeki ZooKeeper düğümleri başlatılmadıysa yeniden başlatın.
  2. ZooKeeper düğümünün neden çöktüğünü belirlemek için ZooKeeper günlüklerini kontrol edin.

    ZooKeeper günlüklerine aşağıdaki dizinde ulaşabilirsiniz:

    $ 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
    
  3. Durdurulmuş olabilecek ZooKeeper düğümlerinin nedenini bulmak için Apigee Destek Ekibi ile iletişime geçin ve ZooKeeper günlüklerini paylaşın.

ZooKeeper düğümü isteklere hizmet vermiyor

Topluluktaki ZooKeeper düğümlerinin durumu iyi olmayabilir ve istemci isteklerine yanıt veremeyebilir. Bunun nedeni aşağıdakilerden biri olabilir:

  1. Düğüm, yeniden başlatılmadan durduruldu.
  2. Düğüm, otomatik başlatma etkinleştirilmeden yeniden başlatıldı.
  3. Düğümdeki sistem yükü bozulmasına veya iyiliğinin bozulmasına neden oldu.

Teşhis

  1. ZooKeeper düğümlerinin her birinde aşağıdaki ZooKeeper durum denetimi komutlarını çalıştırın ve çıkışı kontrol edin:
    1. $ echo "ruok" | nc localhost 2181
      

      Örnek çıktı:

      $ echo "ruok" | nc localhost 2181
      imok
      
    2. 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
      
    3. $ echo mntr | nc localhost 2181
      

      Bu komut, ZooKeeper kümesinin durumunu kontrol etmek için kullanılabilecek ZooKeeper değişkenlerini listeler.

      Örnek çıktı:

      $ 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
      
    4. $ echo stat | nc localhost 2181
      

      Bu komut, performans ve bağlı istemcilerle ilgili istatistikleri listeler.

      Örnek çıktı:

      $ 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
      
    5. $ echo cons | nc localhost 2181
      

      Bu komut, ZooKeeper bağlantılarıyla ilgili ayrıntılı bilgi verir.

      Örnek çıktı:

      $ 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.

  2. İlgili düğümdeki ZooKeeper günlüklerini kontrol edin ve ZooKeeper'ın devre dışı kalmasına neden olan hataları bulmaya çalışın. ZooKeeper günlüklerine aşağıdaki dizinde ulaşabilirsiniz:
    $ 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

  1. Kümedeki diğer tüm ZooKeeper düğümlerini tek tek yeniden başlatın.
  2. Her düğümde ZooKeeper durum denetimi komutlarını yeniden çalıştırın ve beklenen çıkışı alıp almadığınıza bakın.

Sorun devam ediyorsa veya yeniden başlatma işlemi sorunu çözmüyorsa sistem yükü nedenini gidermek için Apigee Destek ile iletişime geçin.