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şlatmaya çalıştığınızda, 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 | Şunun için: |
|---|---|
| Yanlış yapılandırılmış ZooKeeper myid | Edge Private Cloud kullanıcıları |
| Kullanımdaki ZooKeeper bağlantı noktası | Edge Private Cloud kullanıcıları |
| apigee-zookeeper.pid dosyasında yanlış işlem kimliği | Edge Private Cloud kullanıcıları |
| ZooKeeper lider seçimi hatası | 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.
Yanlış yapılandırılmış ZooKeeper myid
Aşağıdaki bölümlerde myid dosyasına genel bir bakış sunulmakta ve yanlış yapılandırma sorunlarının nasıl teşhis edilip çözüleceği açıklanmaktadır.
myid dosyasına genel bakış
Her ZooKeeper düğümünde iki dosya bulunur:
- Kümedeki tüm ZooKeeper düğümlerinin IP'lerinin listesini içeren
/opt/apigee/apigee-zookeeper/conf/zoo.cfgdosyası.Örneğin,
/opt/apigee/apigee-zookeeper/conf/zoo.cfg, kümenin parçası olan 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/myiddosyası, söz konusu ZooKeeper düğümünün sunucu numarasına karşılık gelen tek bir metin satırı içerir. 1. sunucunun myid'si yalnızca "1" metnini içerir. 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/myiddosyası, 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.logkontrol edin. - Aşağıdaki şekilde gösterildiği gibi "Connection broken for id #, my id = #" (Kimlik # için bağlantı kesildi, kimliğim = #) benzeri bir UYARI mesajı görürseniz bu sorunun olası nedeni, myid dosyasındaki # sunucusunun yanlış yapılandırılmış veya bozulmuş 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.cfgdosyasını kontrol edin ve mevcut ZooKeeper düğümü için sunucu numarasını not edin./opt/apigee/data/apigee-zookeeper/data/myiddosyasını kontrol edin ve bu dosyadaki metnin, 2. adımda belirtilen sunucuyla eşleşip eşleşmediğine bakın.- Uyuşmazlık varsa ZooKeeper'ın başlatılamamasının nedenini belirlemişsinizdir.
Çözünürlük
myid dosyası yanlış yapılandırılmışsa myid dosyasını düzenleyin ve değeri zoo.cfg dosyasındaki # parametresini temsil eden doğru metinle değiştirin.
ZooKeeper bağlantı noktası kullanılıyor
Teşhis
- Hatalar için ZooKeeper günlüğünü
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logkontrol edin. - Aşağıdaki şekilde gösterildiği gibi, 2181 numaralı bağlantı noktasına bağlanırken
java.net.BindException: Address already in useistisnasını görürseniz bu, ZooKeeper 2181 numaralı bağlantı noktasının başka bir işlem tarafından kullanıldığını 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 gerçekten başka bir işlem tarafından kullanıldığını doğrulamak için aşağıdaki netstat komutunu kullanın:
netstat -an | grep 2181
Çözünürlük
ZooKeeper 2181 bağlantı noktası hâlâ kullanılıyorsa bu sorunu gidermek için aşağıdaki adımları uygulayın:
- 2181 bağlantı noktasını kullanan işlemi bulmak için
netstatkomutunu 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
- Varsa pid ve kilit dosyalarını temizleyin:
/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ı eski/yanlış PID'yi içerdiğinden ve şu anda çalışan ZooKeeper sürecinin PID'sini içermediğinden işlem başarısız olabilir. Bu durum, ZooKeeper işlemi beklenmedik şekilde veya aniden sonlandırıldıysa ve apigee-zookeeper.pid dosyası silinmediyse meydana gelebilir.
Teşhis
pskomutunu çalıştırarak o sırada çalışmakta olan ZooKeeper işleminin işlem kimliğini alın:ps -ef | grep zookeeper
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.piddosyasının mevcut olup olmadığını kontrol edin. Bu dosya varsa içine 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.içinde yanlış işlem kimliğinin bulunmasıdır.
Çözünürlük
- apigee-zookeeper.pid dosyasını düzenleyin ve yanlış işlem kimliğini, ps komutundan (yukarıdaki 1. adım) alınan doğru işlem kimliğiyle değiştirin.
- ZooKeeper'ı yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ZooKeeper lider seçimi hatası
Teşhis
Teşhis etmek için:
- Hatalar için ZooKeeper günlüğünü
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logkontrol edin. - ZooKeeper'ın lider seçimi işleminin başarısız olmasına neden olabilecek yapılandırma değişiklikleri olup olmadığını kontrol edin.
/opt/apigee/apigee-zookeeper/conf/zoo.cfgdosyasını kontrol edin ve kümedeki tüm ZooKeeper'ların, sunucu için doğru sayıya ve IP adreslerine sahip olduğundan emin olun.# parametresi. Ayrıca, lider seçimi işleminin başarılı olması için en az 3 seçmen olması ve seçmen sayısının tek olması gerektiğini unutmayın. Yeterli sayıda seçmen yoksa (ör. yalnızca 2 seçmen varsa) bu 2 seçmen arasında bir lider belirlemek için yeterli çoğunluğa ulaşılamaz.
Çözünürlük
Genellikle ZooKeeper seçim hatası, yanlış yapılandırılmış bir myid'den kaynaklanır. Seçim hatasını gidermek için Misconfigured ZooKeeper myid (Yanlış yapılandırılmış ZooKeeper myid) bölümündeki çözümü kullanın.
Sorun devam ederse ve daha fazla teşhis yapılması gerekirse Apigee Edge Destek Ekibi ile iletişime geçin.