Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
ZooKeeper işlemi başlatılamıyor.
Hata mesajları
ZooKeeper işlemini başlatmayı denediğinizde, ZooKeeper'ın başlatılamadığını belirten aşağıdaki hata mesajı döndürülür:
+ 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 | (Hedef müşteri) için |
---|---|
Yanlış yapılandırılmış ZooKeeper myid | 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çimlerinin Başarısız Olması | 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.
Hatalı yapılandırılmış ZooKeeper kimlik kimliği
Aşağıdaki bölümlerde myid dosyasına bir genel bakış sunulmakta ve yanlış yapılandırma sorunlarının nasıl tespit edilip giderileceği açıklanmaktadır.
myid dosyasına genel bakış
Her ZooKeeper düğümünde iki dosya bulunur:
- Kümedeki tüm ZooKeeper düğümleri için IP'lerin listesini içeren
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
dosyası.Örneğin,
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
, kümenin içindeki 3 ZooKeeper düğümünün IP'lerini aşağıdaki gibi içeriyorsa:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
/opt/apigee/data/apigee-zookeeper/data/myid
dosyası, söz konusu ZooKeeper düğümünün sunucu numarasına karşılık gelen tek bir satır metin içerir. Sunucu 1'in myid değeri, "1" metnini içerir ve başka hiçbir şey içermez. Kimlik, topluluk içinde benzersiz olmalı 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ı, aşağıda gösterildiği gibi yalnızca 1 metnini içermelidir:$ cat myid 1
Teşhis
- Hatalar için ZooKeeper günlüğünü
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
kontrol edin. - Aşağıdaki şekilde gösterildiği gibi "#, kimliğim = # için bağlantı kesildi," şeklinde bir WARN mesajı görüyorsanız bu sorunun olası nedeni myid dosyasındaki sunucu # numaralı sunucunun yanlış yapılandırılmış veya bozuk olması olabilir.
[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)
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
dosyasını kontrol edin ve geçerli ZooKeeper düğümü için server.# değerini not edin./opt/apigee/data/apigee-zookeeper/data/myid
dosyasını kontrol edin ve bu dosyadaki metnin 2. adımda belirtilen sunucu# ile eşleşip eşleşmediğini kontrol edin.- Bir uyuşmazlık varsa ZooKeeper'ın başlatamamasının nedenini tanımlamışsınız demektir.
Çözünürlük
myid dosyası yanlış yapılandırılmışsa myid dosyasını düzenleyip değeri, zo.cfg dosyasında server.# parametresini temsil eden doğru metinle değiştirin.
ZooKeeper bağlantı noktası kullanılıyor
Teşhis
- Hatalar için
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
ZooKeeper günlüğünü kontrol edin. - Aşağıdaki şekilde gösterildiği gibi, 2181 numaralı bağlantı noktasına bağlarken
java.net.BindException: Address already in use
istisnasıyla karşılaşmanız, ZooKeeper bağlantı noktası 2181'in başka bir işlem tarafından kullanılmakta olduğunu gösterir. 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)
- ZooKeeper bağlantı noktası 2181'in başka bir işlem tarafından kullanıldığını onaylamak için aşağıdaki netstat komutunu kullanın:
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:
- 2181 numaralı bağlantı noktasında bulunan işlemi bulmak için
netstat
komutunu kullanın. ZooKeeper bağlantı noktası 2181'i kullanan işlemi durdurun:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- pid'yi temizleyin ve varsa dosyaları kilitleyin:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- 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 anda çalışan ZooKeeper işleminin dosyasını değil, eski/yanlış pid içerdiğinden başarısız olabilir. ZooKeeper işleminin beklenmedik veya ani bir şekilde sonlandırılması ve apigee-zookeeper.pid
dosyası silinmemesi durumunda bu durum yaşanabilir.
Teşhis
ps
komutunu çalıştırarak şu anda çalışan ZooKeeper işleminin işlem kimliğini alın:ps -ef | grep zookeeper
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
dosyasının mevcut olup olmadığını kontrol edin. Dosya mevcutsa, bu dosyaya yazılan işlem kimliğini not edin.- 1. ve 2. adımda alınan işlem kimliklerini karşılaştırın. Bunlar farklıysa bu sorunun nedeni
apigee-zookeeper.pid file.
öğesindeki işlem kimliğinin yanlış olmasıdır
Çözünürlük
- Apigee-zookeeper.pid dosyasını düzenleyin ve yanlış işlem kimliğini ps komutundan alınan doğru işlem kimliğiyle değiştirin (yukarıdaki 1. adım).
- 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:
- Hatalar için ZooKeeper günlüğünü
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
kontrol edin. - Liderin ZooKeeper seçiminin başarısız olmasına yol açabilecek herhangi bir yapılandırma değişikliği olup olmadığını kontrol edin.
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
öğesini kontrol edin ve kümedeki tüm ZooKeeper'ların server.# parametresi için doğru sayıya ve IP adresine sahip olduğundan emin olun. Ayrıca, lider seçiminin başarılı olması için en az 3 seçmen olması ve seçmen sayısının tek sayı olması gerektiğini de unutmayın. Yalnızca 2 seçmen gibi çok az seçmen varsa yalnızca 2 seçmen arasından bir lider belirlemek için yeterli çoğunluk kurulamaz.
Çözünürlük
Genellikle, ZooKeeper seçim hatası, yanlış yapılandırılmış bir kimlik doğrulamasından kaynaklanır. Seçimle ilgili başarısızlık sorununu gidermek için Yanlış yapılandırılmış ZooKeeper myid bölümündeki çözünürlüğü kullanın.
Sorun devam ederse ve daha fazla teşhis yapılması gerekiyorsa Apigee Edge Destek Ekibi ile iletişime geçin.