يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
المشكلة
يتعذّر بدء عملية ZooKeeper.
رسائل الخطأ
عند محاولة بدء عملية ZooKeeper، يتم عرض رسالة الخطأ التالية التي تشير إلى أنه تعذَّر بدء ZooKeeper:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
الأسباب المحتملة
يسرد الجدول التالي الأسباب المحتملة لهذه المشكلة:
السبب | موجَّه إلى |
---|---|
تم إعداد ZooKeeper myid بشكلٍ غير صحيح | مستخدمو Edge Private Cloud |
منفذ ZooKeeper قيد الاستخدام | مستخدمو Edge Private Cloud |
معرّف العملية غير صحيح في ملف apigee-zookeeper.pid | مستخدمو Edge Private Cloud |
فشل انتخابات رؤساء حديقة الحيوانات ZooKeeper | مستخدمو Edge Private Cloud |
انقر على رابط في الجدول لعرض الحلول الممكنة لهذا السبب.
تم إعدادها بشكل خاطئ لـ ZooKeeper myid
تقدم الأقسام التالية نظرة عامة على ملف myid وتشرح كيفية تشخيص مشاكل الضبط الخاطئ وحلّها.
نظرة عامة على ملف myid
في كل عقدة ZooKeeper، يوجد ملفان:
- ملف
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
الذي يحتوي على قائمة بعناوين IP لجميع عُقد ZooKeeper في المجموعة.على سبيل المثال، إذا كانت السمة
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
تحتوي على عناوين IP لجزء من 3 عُقد ZooKeeper في المجموعة على النحو التالي: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
على سطر واحد من النص يقابل رقم الخادم لعقدة ZooKeeper المحدّدة هذه. سيحتوي معرّف الخادم 1 على النص "1" ولا شيء آخر. ويجب أن يكون المعرّف فريدًا داخل المجموعة ويجب أن تتراوح قيمته بين 1 و255.على سبيل المثال، في خادم ZooKeeper.1، يجب أن يحتوي ملف
/opt/apigee/data/apigee-zookeeper/data/myid
فقط على النص 1 كما هو موضّح أدناه:$ cat myid 1
التشخيص
- تحقَّق من سجلّ ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
بحثًا عن الأخطاء. - إذا ظهرت رسالة WARN بشكل مشابه لرسالة "الاتصال معطل للمعرّف #، المعرّف = #"،
كما هو موضّح في الشكل أدناه، قد يكون السبب المحتمل لهذه المشكلة هو أنّ رقم الخادم
في ملف myid قد تم ضبطه بشكل خاطئ أو تالف.
[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
ودوِّن الخادم.# لعقدة ZooKeeper الحالية. - تحقَّق من ملف
/opt/apigee/data/apigee-zookeeper/data/myid
لمعرفة ما إذا كان النص في هذا الملف يتطابق مع الخادم.# مذكور في الخطوة رقم 2. - وإذا كان هناك عدم تطابق، هذا يعني أنك حددت سبب تعذُّر بدء ZooKeeper.
درجة الدقّة
في حال ضبط ملف myid بشكل غير صحيح، عليك تعديل ملف myid واستبدال القيمة بنص صحيح يمثّل المَعلمة server.# في للسمة المخصصة Zoo.cfg.
منفذ ZooKeeper قيد الاستخدام
التشخيص
- تحقَّق من سجلّ ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
بحثًا عن أخطاء. - إذا لاحظت الاستثناء
java.net.BindException: Address already in use
أثناء الربط بالمنفذ رقم 2181، كما هو موضّح في الشكل أدناه، يعني ذلك أنّ عملية أخرى تستخدم منفذ ZooKeeper 2181. وبالتالي، تعذَّر تشغيل ZooKeeper.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)
- استخدِم الأمر netstat أدناه للتأكّد من أنّ منفذ ZooKeeper رقم 2181 قيد الاستخدام
في عملية أخرى:
netstat -an | grep 2181
درجة الدقّة
إذا كان المنفذ ZooKeeper 2181 لا يزال قيد الاستخدام، اتّبِع الخطوات التالية لحلّ هذه المشكلة:
- يمكنك استخدام الأمر
netstat
للعثور على العملية التي تحتفظ بالمنفذ 2181. إيقاف العملية التي تستخدم المنفذ ZooKeeper رقم 2181:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- محو ملفات Pid وقفلها إذا كانت متوفّرة:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- أعِد تشغيل تطبيق ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
معرّف العملية غير صحيح في ملف apigee-zookeeper.pid
عند محاولة إيقاف أو إعادة تشغيل ZooKeeper، قد يتعذّر تنفيذ ذلك لأنّ
ملف apigee-zookeeper.pid
يحتوي على معرّف PID أقدم/غير صحيح وليس معرّف عملية ZooKeeper قيد التشغيل حاليًا. وقد يحدث ذلك إذا تم إنهاء عملية ZooKeeper بشكلٍ غير متوقّع أو
مفاجئ لسبب ما ولم يتم حذف الملف apigee-zookeeper.pid
.
التشخيص
- احصل على معرّف العملية لعملية ZooKeeper قيد التشغيل حاليًا عن طريق تشغيل الأمر
ps
:ps -ef | grep zookeeper
- تحقَّق من توفُّر ملف
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
. إذا كان متوفرًا، دوِّن معرّف العملية المكتوب في هذا الملف. - قارِن بين أرقام تعريف العمليات المأخوذة من الخطوة رقم 1 ورقم 2. في حال اختلافهما، يعني ذلك أنّ سبب هذه المشكلة هو توفّر معرّف عملية غير صحيح في
apigee-zookeeper.pid file.
.
درجة الدقّة
- عدِّل الملف apigee-zookeeper.pid واستبدل معرّف العملية غير الصحيح بمعرّف العملية الصحيح الذي تم الحصول عليه من الأمر ps (الخطوة 1 أعلاه).
- أعِد تشغيل تطبيق ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
فشل انتخابات حديقة الحيوانات الزعيم
التشخيص
لتشخيص المشكلة:
- تحقَّق من سجلّ ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
بحثًا عن الأخطاء. - تحقَّق ممّا إذا كانت هناك أي تغييرات في الإعدادات قد تؤدي إلى تعذُّر اختيار القائد الذي تم تعيينه لـ ZooKeeper.
- راجِع السمة
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
وتأكَّد من أنّ جميع ZooKeepers في المجموعة يتضمنون العدد الصحيح وعناوين IP للمَعلمة الخاصة بالخادم.#. يُرجى العِلم أيضًا أنّه لكي تنجح انتخابات الرئيس، يجب أن يكون هناك 3 ناخبين على الأقل ويجب أن يكون عدد المقترعين رقمًا فرديًا. وإذا كان عدد الناخبين قليلاً جدًا، مثل ناخبين فقط، لا يمكن الوصول إلى النصاب لتحديد قائد من بين ناخبين فقط.
درجة الدقّة
عادةً ما يحدث تعذُّر الانتخابات في ZooKeeper بسبب ضبط myid بشكل خاطئ. يمكنك استخدام درجة الدقة في ZooKeeper myid الذي تم إعداده بشكلٍ خاطئ لمعالجة فشل الانتخابات.
في حال استمرار المشكلة وحاجة إلى مزيد من التشخيص، يُرجى التواصل مع فريق دعم Apigee Edge.