أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
يتعذّر بدء عملية ZooKeeper.
رسائل الخطأ
عند محاولة بدء عملية ZooKeeper، يتم عرض رسالة الخطأ التالية التي تشير إلى تعذُّر بدء ZooKeeper:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
الأسباب المحتملة
يعرض الجدول التالي الأسباب المحتملة لهذه المشكلة:
| السبب | موجَّه إلى |
|---|---|
| تم إعداد myid في ZooKeeper بشكلٍ خاطئ | مستخدمو Edge Private Cloud |
| منفذ ZooKeeper قيد الاستخدام | مستخدمو Edge Private Cloud |
| معرّف العملية غير صحيح في ملف apigee-zookeeper.pid | مستخدمو Edge Private Cloud |
| تعذُّر اختيار قائد ZooKeeper | مستخدمو Edge Private Cloud |
انقر على رابط في الجدول للاطّلاع على الحلول المحتملة لهذا السبب.
تم إعداد myid في ZooKeeper بشكلٍ خاطئ
تقدّم الأقسام التالية نظرة عامة على ملف 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 المعيّنة. سيحتوي ملف myid الخاص بالخادم 1 على النص "1" فقط. يجب أن يكون المعرّف فريدًا ضمن المجموعة، وأن تتراوح قيمته بين 1 و255.على سبيل المثال، على الخادم 1 في ZooKeeper، يجب أن يحتوي الملف
/opt/apigee/data/apigee-zookeeper/data/myidعلى النص 1 فقط كما هو موضّح أدناه:$ cat myid 1
التشخيص
- تحقَّق من سجلّ ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logبحثًا عن أخطاء. - إذا ظهرت لك رسالة تحذير مشابهة للرسالة "تم قطع الاتصال برقم التعريف #، رقم التعريف الخاص بي = #"،
كما هو موضّح في الشكل أدناه، قد يكون السبب المحتمل لهذه المشكلة هو أنّ الخادم #
في ملف 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لمعرفة ما إذا كان النص في هذا الملف يتطابق مع server.# المذكور في الخطوة 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 أدناه للتأكّد من أنّ المنفذ 2181 في ZooKeeper مستخدَم بالفعل من خلال عملية أخرى:
netstat -an | grep 2181
الدقة
إذا كان المنفذ 2181 في ZooKeeper لا يزال قيد الاستخدام، اتّبِع الخطوات التالية لحلّ هذه المشكلة:
- استخدِم الأمر
netstatللعثور على العملية التي تستخدم المنفذ 2181. أوقِف العملية التي تستخدم المنفذ 2181 في ZooKeeper:$ 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 يحتوي على رقم تعريف عملية قديم/غير صحيح وليس رقم تعريف عملية 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 Leader Election Failure
التشخيص
لتشخيص المشكلة:
- تحقَّق من سجلّ ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logبحثًا عن أخطاء. - تحقَّق مما إذا كانت هناك أي تغييرات في الإعدادات قد تؤدي إلى تعذُّر اختيار ZooKeeper للقائد.
- تحقَّق من
/opt/apigee/apigee-zookeeper/conf/zoo.cfgوتأكَّد من أنّ جميع ZooKeepers في المجموعة تتضمّن العدد وعناوين IP المناسبة للمعلمة server.#. يُرجى أيضًا العِلم أنّه لكي تنجح عملية اختيار القائد، يجب أن يكون هناك 3 مصوّتين على الأقل، ويجب أن يكون عدد المصوّتين فرديًا. إذا كان عدد المصوّتين قليلاً جدًا، مثلاً مصوّتَين فقط، لا يمكن الوصول إلى النصاب القانوني لتحديد قائد من بين مصوّتَين فقط.
الدقة
عادةً، يحدث تعذُّر اختيار ZooKeeper بسبب إعداد myid بشكلٍ غير صحيح. استخدِم الحلّ الوارد في myid الذي تم إعداده بشكل غير صحيح في ZooKeeper لمعالجة تعذُّر الانتخاب.
في حال استمرار المشكلة والحاجة إلى تشخيص إضافي، يُرجى التواصل مع فريق دعم Apigee Edge.