Zookeeper Bağlantı Kaybı Hataları

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

ZooKeeper bağlantı sorunları, aşağıdakiler gibi farklı belirtiler şeklinde kendini gösterebilir:

  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 İşlemcileri başlatılamıyor
  4. Analytics bileşenleri, system.logs dosyasında ZooKeeper bağlantı kaybını bildiriyor

Hata mesajları

Aşağıda, ZooKeeper düğümleriyle bağlantı kaybı.

  1. Bir API Proxy dağıtımı yapıldığında Yönetim Sunucusu günlüklerinde aşağıdaki hata döndürülür ZooKeeper Connection kaybından dolayı başarısız oluyor:
    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. Varsa ZooKeeper'la ilgili bağlantı sorunları olursa bu bileşenler aşağıdaki hata:
    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ünde, API Proxy'lerinin dağıtım durumu:
    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ü istekleri yerine getirmiyor Edge Private Cloud kullanıcıları

Bu duruma ilişkin olası çözümleri görmek için tabloda bir bağlantıyı tıklayın.

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

Teşhis

Bir ZooKeeper kümesinin, aşağıdakiler de dahil olmak üzere birden çok bölgeyi/veri merkezini kapsayan düğümleri olabilir: DC-1 ve DC-2 için geçerlidir. Tipik Apigee Edge 2 DC topolojisinde şunlar bulunur:

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

DC-1 bölgesi kapanırsa 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 liderle iletişim kuramaz düğüm. ZooKeeper'ın gözlemcileri yeni bir lider seçemez ve DC-2'de kalan iki seçmen yeni bir lider seçemez yeni bir lideri seçmek için en az 3 seçmen sayısına sahip olması. Böylece, DC-2'deki ZooKeepers'ın isteklerini işleme koyamaz. DC-2'de kalan ZooKeeper düğümleri döngüye girmeye devam eder lideri bulmak için ZooKeeper seçmenleriyle bağlantı kurmayı deniyor.

Çözünürlük

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

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

1. Çözüm

  1. Cihazlar arasındaki ağ bağlantısı sorununu gidermek için ağ yöneticilerinizle veri merkezleridir.
  2. ZooKeeper topluluğu veri merkezleri arasında iletişim kurabildiğinde ve ZooKeeper lideri, düğümlerin iyi durumda olması ve istekleri işleyebilmesi gerekir.

2. Çözüm

  1. Ağ bağlantısının onarılması zaman alacaksa, bu sorunu çözmek için Bulundukları bölgedeki ZooKeeper düğümleri. Örneğin, ZooKeeper'ı yeniden yapılandırma kümeyi DC-2'ye yerleştirerek bu bölgedeki 3 ZooKeeper düğümünün tamamının seçmen olmasını sağlayın ve server.#, ZooKeepers'taki DC-1 bölgesinin zoo.cfg bölümünde.
    1. Aşağıdaki örnekte zoo.cfg, DC-1'in us-ea kullandığı 2 bölge için düğümleri yapılandırır ABD-Doğu bölgesini belirten ana makine adları, DC-2 ise ABD-Batı bölgesini belirten us-wo ana makine adlarını kullanı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. Kodu yapılandırmayla kullanarak, şu şekilde 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, ABD-Doğu düğümleri kaldırılır ve ABD-Batı düğümleri :observer ek açıklaması kaldırıldığında seçmen sayısı.

  2. /opt/apigee/apigee-zookeeper/conf/zoo.cfg ve eskileri yedekle /opt/apigee/customer/application/zookeeper.properties.

    Bu dosyalar, ağ bağlantısı tekrar kurulduğunda varsayılan ayarları geri yüklemek için kullanılır veri merkezleri arasında geçiş yapıyor.

  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 üst kısmına şu yapılandırmayı ekleyin:

    conf_zoo_peertype=
  4. /opt/apigee/data/apigee-zookeeper/data/myid dosyasını şu şekilde 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'ı yeniden yapılandırdığınız bölgede ZooKeeper düğümlerini yeniden başlatın kümesidir.
  6. Yukarıdaki yapılandırma işlemini #1b adımından 5. adıma kadar tekrarlayın ve DC-2'ye gidin.
  7. Düğümlerin bir liderle ç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ışı, "mode" yazan bir satır içerir ardından "lider" yer alır eğer veya "takipçisi" olan takip ediyorsunuz.

    Veri merkezleri arasındaki ağ yeniden kurulduğunda, ZooKeeper yapılandırmaları değişiklikler 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 bozulduğunu 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
    
  3. Apigee Destek Ekibi ile iletişime geçin ve ZooKeeper'ın, durdurulmuş olabilecek herhangi bir ZooKeeper düğümünün nedenini gidermek için günlük kaydı yapılır.

ZooKeeper düğümü isteklerine hizmet vermiyor

Topluluktaki bir ZooKeeper düğümü sağlıksız hale gelebilir ve istemciye yanıt veremeyebilir kabul edersiniz. 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ü, düğümün çalışmamasına veya kötü durumda kalmasına neden oldu.

Teşhis

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

      Örnek çıkış:

      $ 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, bir örneğidir.

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

      Bu komut, ZooKeeper bağlantılarıyla ilgili genişletilmiş ayrıntılar sağlar.

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

  2. İlgili düğümdeki ZooKeeper günlüklerini kontrol edin ve ZooKeeper kullanımdan kaldırılacak. 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

  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ı tekrar çalıştırın ve beklenen içeriği alıp almadığınızı kontrol edin çıktı.

Apigee Destek Ekibi ile iletişime geçerek sorun devam ederse veya yeniden başlatma işlemi sorunu çözmezse sistem yüklemesini kontrol edin.