أنت تعرض مستندات 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 بشكل خاطئ | مستخدمو Edge Private Cloud |
منفذ ZooKeeper قيد الاستخدام | مستخدمو Edge Private Cloud |
رقم تعريف العملية غير صحيح في ملف apigee-zookeeper.pid | مستخدمو Edge Private Cloud |
فشل في انتخابات قائد فريق ZooKeeper | مستخدمو Edge Private Cloud |
انقر على أحد الروابط في الجدول لمعرفة الحلول الممكنة لذلك السبب.
تم إعداد 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 المحدّدة. غموض سيحتوي الخادم 1 على النص "1" ولا شيء آخر. يجب أن يكون المعرّف فريدًا داخل المجموعة. وينبغي أن تتراوح قيمتها بين 1 و255.على سبيل المثال، في ZooKeeper server.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
ودوِّن server.# لعقدة 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
التشخيص
لتشخيص التشخيص:
- مراجعة سجلّ ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
بحثًا عن الأخطاء. - تحقَّق مما إذا كان هناك أي تغييرات في الإعدادات قد تؤدي إلى اختيار ZooKeeper الفشل.
- يُرجى التحقّق من
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
والتأكد من جميع يحتوي ZooKeepers في المجموعة على العدد الصحيح وعناوين IP لمعلَمة server.#. تجدر الإشارة أيضًا إلى أنّه يجب توفّر 3 أصوات على الأقل لإنجاح الانتخابات الرئاسية. ويجب أن يكون عدد الناخبين أعدادًا فردية. في حال كان عدد الناخبين قليلاً جدًا، مثلاً 2 ولا يمكن التوصل إلى اكتمال نصاب لتحديد قائد من بين ناخبين فقط.
الدقة
يحدث عادةً تعذُّر إكمال عملية اختيار ZooKeeper بسبب ضبط إعدادات الجهاز بشكل غير صحيح. استخدام درجة الدقة في تم إعدادها بشكل خاطئ على ZooKeeper لمعالجة الإخفاق في الانتخابات.
في حال استمرار المشكلة مع الحاجة إلى مزيد من التشخيص، يُرجى التواصل مع فريق دعم Apigee Edge.