Zookeeper Başlatılamıyor

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

Belirti

ZooKeeper işlemi başlatılamıyor.

Hata mesajları

ZooKeeper işlemini başlatmaya çalıştığınızda aşağıdaki hata mesajı döndürülür ZooKeeper'ın başlatılamadığını gösterir:

+ apigee-service apigee-zookeeper status
apigee-service: apigee-zookeeper: Not running (DEAD)
apigee-all: Error: status failed on [apigee-zookeeper]

Olası nedenler

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

Neden Şunun için:
Yanlış yapılandırılmış ZooKeeper kimlik bilgilerim Edge Private Cloud kullanıcıları
ZooKeeper bağlantı noktası kullanılıyor Edge Private Cloud kullanıcıları
Apigee-zookeeper.pid dosyasında yanlış işlem kimliği Edge Private Cloud kullanıcıları
ZooKeeper Lideri Seçiminde Başarısızlık 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.

Yanlış yapılandırılmış ZooKeeper myid kimliği

Aşağıdaki bölümlerde myid dosyasına genel bir bakış sağlanarak teşhisin ve ve yapılandırma sorunlarını çözer.

myid dosyasına genel bakış

Her bir ZooKeeper düğümünde iki dosya vardır:

  1. Aşağıdakilerin listesini içeren /opt/apigee/apigee-zookeeper/conf/zoo.cfg dosyası Kümedeki tüm ZooKeeper düğümleri için IP'ler.

    Örneğin, /opt/apigee/apigee-zookeeper/conf/zoo.cfg Kümenin bir bölümündeki 3 ZooKeeper düğümünün IP'leri aşağıdaki gibidir:

    server.1=11.11.11.11:2888:3888
    server.2=22.22.22.22:2888:3888
    server.3=33.33.33.33:2888:3888
    
  2. /opt/apigee/data/apigee-zookeeper/data/myid dosyası, ilgili ZooKeeper düğümünün sunucu numarasına karşılık gelen metindir. Myid sunucu 1 "1" metnini içerir başka hiçbir şey yapmam gerekir. Kimlik, topluluk içinde benzersiz olmalıdır ve 1 ile 255 arasında bir değere sahip olmalıdır.

    Örneğin, ZooKeeper server.1'de /opt/apigee/data/apigee-zookeeper/data/myid dosyası yalnızca 1 metnini içermelidir aşağıdaki gibidir:

    $ cat myid
    1
    

Teşhis

  1. ZooKeeper günlüğünde /opt/apigee/var/log/apigee-zookeeper/zookeeper.log hatalar.
  2. "ID #, my id = #" için bağlantı kesildi." ifadesine benzer bir WARN (UYAR) mesajı görürseniz aşağıdaki şekilde gösterildiği gibi, bu sorunun olası nedeni sunucu # yanlış yapılandırılmış veya bozuktur.
    [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)
    
  3. /opt/apigee/apigee-zookeeper/conf/zoo.cfg dosyasını kontrol edin ve Server.# ekleyin.
  4. /opt/apigee/data/apigee-zookeeper/data/myid dosyasını kontrol ederek metnin dosyası, 2. adımda belirtilen sunucu.# ile eşleşir.
  5. Uyuşmazlık varsa ZooKeeper'ın başarısız olmasının nedenini belirlemişsinizdir başlatabilirsiniz.

Çözünürlük

myid dosyası yanlış yapılandırılmışsa myid dosyasını düzenleyin ve değeri Zoo.cfg dosyasındaki server.# parametresini temsil eden doğru metin.

ZooKeeper bağlantı noktası kullanılıyor

Teşhis

  1. /opt/apigee/var/log/apigee-zookeeper/zookeeper.log ZooKeeper günlüğünü kontrol et: hatalar.
  2. Aşağıdaki istisnayı fark ederseniz java.net.BindException: Address already in use bağlantı noktası #2181'e bağlanırken, aşağıdaki şekilde gösterildiği gibi, ZooKeeper'ın bağlantı noktası 2181 başka bir işlem tarafından kullanılıyor. Bu nedenle ZooKeeper başlatılamadı.
    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)
    
  3. ZooKeeper bağlantı noktası 2181'in gerçekten kullanıldığını onaylamak için aşağıdaki netstat komutunu kullanın başka bir süreçle:
    netstat -an | grep 2181
    

Çözünürlük

ZooKeeper bağlantı noktası 2181 hâlâ kullanılıyorsa bu sorunu gidermek için aşağıdaki adımları uygulayın sorun:

  1. 2181 numaralı bağlantı noktasında bekletilen işlemi bulmak için netstat komutunu kullanın. ZooKeeper bağlantı noktası 2181'i kullanan işlemi sonlandırın:
    $ netstat -antp | grep 2181
    tcp        0      0 0.0.0.0:2181            0.0.0.0:*
    LISTEN      28016/java <defunct>
    $ kill -9 28016
    
  2. Varsa pid dosyalarını temizleyin ve dosyaları kilitleyin:
    /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
    /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
    
  3. ZooKeeper'ı yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
    

Apigee-zookeeper.pid dosyasında yanlış işlem kimliği

ZooKeeper'ı durdurmaya/yeniden başlatmaya çalıştığınızda, apigee-zookeeper.pid dosyası, şu anki geçerli kimliği değil, eski/yanlış pid içeriyor nasıl kullanacağınızı göstereceğim. ZooKeeper işlemi beklenmedik bir şekilde sonlandırılırsa veya ve apigee-zookeeper.pid dosyası silinmedi.

Teşhis

  1. Şu anda çalışan ZooKeeper işleminin işlem kimliğini almak için ps komutu:
    ps -ef | grep zookeeper
    
  2. /opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid dosyasının bulunup bulunmadığını kontrol edin gerekir. Dosya mevcutsa, bu dosyaya yazılan işlem kimliğini not edin.
  3. 1. ve 2. adımda alınan işlem kimliklerini karşılaştırın. İkisi de farklıysa, bunun nedeni apigee-zookeeper.pid file. içindeki işlem kimliği yanlış.

Çözünürlük

  1. Apigee-zookeeper.pid dosyasını düzenleyin ve yanlış işlem kimliğini doğru ps komutundan alınan işlem kimliği (yukarıdaki 1. adım).
  2. ZooKeeper'ı yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
    

ZooKeeper Lideri Seçiminde Başarısızlık

Teşhis

Teşhis etmek için:

  1. ZooKeeper günlüğünde /opt/apigee/var/log/apigee-zookeeper/zookeeper.log hatalar.
  2. ZooKeeper'ın başarısız olmasını sağlar.
  3. /opt/apigee/apigee-zookeeper/conf/zoo.cfg kontrol edin ve tüm reklam öğelerinin Kümedeki ZooKeeper'lar, server.# parametresi için uygun sayıda ve IP adresine sahip. Lider seçiminin başarılı olması için en az 3 seçmen olması gerektiğini unutmayın ve seçmen sayısı tek sayı olmalıdır. Seçmen sayısı çok azsa (ör. sadece 2 kişi) 2 seçmen arasından bir lider belirlemek için yeterli çoğunluk elde edilemez.

Çözünürlük

ZooKeeper seçim hatası, genellikle yanlış yapılandırılmış bir myid'den kaynaklanır. Çözünürlüğü şurada kullanın: Seçim başarısızlığını ele almak için zoKeeper kimlik bilgilerim yanlış yapılandırılmış.

Sorun devam ederse ve daha fazla teşhis gerekirse Apigee Edge Destek Ekibi ile iletişime geçin.