أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المشكلة
يمكن أن تظهر مشاكل اتصال ZooKeeper في أعراض مختلفة مثل:
- أخطاء نشر خادم وكيل واجهة برمجة التطبيقات
- إخفاق طلبات البيانات من واجهة برمجة التطبيقات للإدارة مع ظهور أخطاء 5XX
- فشل تشغيل أجهزة التوجيه أو معالِجات الرسائل
- تُبلغ مكونات Analytics عن فقدان اتصال ZooKeeper في system.logs
رسائل الخطأ
يقدم ما يلي أمثلة على رسائل الخطأ التي يمكن ملاحظتها في حالة فقدان الاتصال بعُقد ZooKeeper.
- يتم عرض الخطأ التالي في سجلات "خادم الإدارة" عند نشر الخادم الوكيل لواجهة برمجة التطبيقات
فشل بسبب فقدان اتصال ZooKeeper:
org: env: main INFO ZOOKEEPER - ZooKeeperServiceImpl.exists() : Retry path existence path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR ZOOKEEPER - ZooKeeperServiceImpl.exists() : Could not detect existence of path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable , reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR KERNEL.DEPLOYMENT - ServiceDeployer.startService() : ServiceDeployer.deploy() : Got a life cycle exception while starting service [ServerRegistrationService, Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable] : com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorCheckingPathExis tence, message = Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, associated contexts = []} 2015-03-25 10:22:39,811 org: env: main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : EventService com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:339) ~[zookeeper-1.0.0.jar:na] at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists( ZooKeeperServiceImpl.java:323) ~[zookeeper-1.0.0.jar:na] at ... snipped
- أثناء بدء التشغيل، تتصل أجهزة التوجيه ومعالجات الرسائل بـ ZooKeeper. إذا كانت هناك
في الاتصال بـ ZooKeeper، فلن تبدأ هذه المكونات بما يلي
خطأ:
2017-08-01 23:20:00,404 CuratorFramework-0 ERROR o.a.c.f.i.CuratorFrameworkImpl - CuratorFrameworkImpl.logError() : Background operation retry gave up org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkBackgroundRetry(CuratorFrameworkImpl.java:710) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:827) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275) [curator-framework-2.5.0.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
- قد تعرض واجهة مستخدم Edge الخطأ التالي الذي يشير إلى تعذّر التحقق من
حالة نشر الخوادم الوكيلة لواجهة برمجة التطبيقات:
Error Fetching Deployments Error while checking path existence for path: path
الأسباب المحتملة
يسرد الجدول التالي الأسباب المحتملة لهذه المشكلة:
السبب | موجَّه إلى |
---|---|
مشكلة في الاتصال بالشبكة في مراكز البيانات المختلفة | مستخدمو Edge Private Cloud |
عقدة ZooKeeper لا تقدّم الطلبات | مستخدمو Edge Private Cloud |
انقر على أحد الروابط في الجدول لمعرفة الحلول الممكنة لذلك السبب.
مشكلة في اتصال الشبكة عبر مراكز البيانات المختلفة
التشخيص
قد تحتوي مجموعة ZooKeeper على عُقد تمتد عبر مناطق/مراكز بيانات متعددة، مثل DC-1 وDC-2. ستتضمّن هيكلية Apigee Edge 2 DC النموذجية ما يلي:
- خوادم ZooKeeper 1 و2 و3 كمصوتين في DC-1
- ZooKeeper 4 و5 كناخبين و ZooKeeper 6 كمراقب في DC-2.
إذا تعطلت منطقة DC-1 أو انقطع اتصال الشبكة بين DC-1 وDC-2، فحينئذٍ لا يمكن لعُقد ZooKeeper اختيار قائد جديد في DC-2 وإخفاقها في التواصل مع القائد العقدة. لا يمكن مراقبي ZooKeeper اختيار قائد جديد ولا يمكن للناخبين المتبقين في DC-2 اختيار زعيم. لديهم نصاب مكون من 3 عُقد على الأقل لانتخاب زعيم جديد. وبالتالي، سيعتمد تطبيق ZooKeepers في DC-2 غير قادر على معالجة أي طلبات. ستستمر عُقد ZooKeeper المتبقية في DC-2 في التكرار ويحاول التواصل مرة أخرى مع ناخبي ZooKeeper للعثور على الزعيم.
الدقة
طبِّق الحلول التالية لمعالجة هذه المشكلة بالترتيب المحدّد.
إذا لم تتمكّن من حلّ المشكلة بعد تجربة هذه الحلول، يُرجى التواصل مع فريق دعم Apigee
الحل الأول
- اعمل مع مشرفي الشبكات على إصلاح مشكلة اتصال الشبكة بين مراكز البيانات.
- عندما تتمكن مجموعة ZooKeeper من التواصل عبر مراكز البيانات واختيار قائد ZooKeeper، يجب أن تصبح العُقد سليمة وتكون قادرة على معالجة الطلبات.
الحل الثاني
- إذا كان إصلاح اتصال الشبكة سيستغرق بعض الوقت، فإن الحل البديل هو إعادة تهيئة
عُقد ZooKeeper في المنطقة التي توجد فيها. على سبيل المثال، إعادة ضبط ZooKeeper
في DC-2 بحيث تكون عُقد ZooKeeper الثلاثة في هذه المنطقة جميعها من المصوتين وإزالة
server.#
فيzoo.cfg
من ZooKeepers من منطقة DC-1.- في المثال التالي، يضبط
zoo.cfg
العُقد لمنطقتَين حيث يستخدم DC-1 السمةus-ea
أسماء المضيفين التي تشير إلى منطقة شرق الولايات المتحدة وDC-2 وتستخدمus-wo
أسماء مضيفين تشير إلى منطقة غرب الولايات المتحدة. (ملاحظة: يتم عرض الإعدادات ذات الصلة فقط):server.1=zk01ea.us-ea.4.apigee.com:2888:3888 server.2=zk02ea.us-ea.4.apigee.com:2888:3888 server.3=zk03ea.us-ea.4.apigee.com:2888:3888 server.4=zk04wo.us-wo.4.apigee.com:2888:3888 server.5=zk05wo.us-wo.4.apigee.com:2888:3888 server.6=zk06wo.us-wo.4.apigee.com:2888:3888:observer
في المثال أعلاه، أعِد ضبط
zoo.cfg
على النحو التالي:server.1=zk04wo.us-wo.4.apigee.com:2888:3888 server.2=zk05wo.us-wo.4.apigee.com:2888:3888 server.3=zk06wo.us-wo.4.apigee.com:2888:3888
- باستخدام الرمز مع الإعدادات،
إنشاء ملف
/opt/apigee/customer/application/zookeeper.properties
بما يلي:conf_zoo_quorum=server.1=zk04wo.us-wo.4.apigee.com:2888:3888\ \nserver.2=zk05wo.us-wo.4.apigee.com:2888:3888\ \nserver.3=zk06wo.us-wo.4.apigee.com:2888:3888\
في ما سبق، تتم إزالة العُقد من شرق الولايات المتحدة، وترقيتها إلى المصوتين عند إزالة تعليق
:observer
التوضيحي. - في المثال التالي، يضبط
- الاحتفاظ بنسخة احتياطية من بيانات
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
والقديمة/opt/apigee/customer/application/zookeeper.properties
سيتم استخدام هذه الملفات لاستعادة الإعدادات التلقائية عند الاحتفاظ بنسخة احتياطية من الاتصال بالشبكة. بين مراكز البيانات.
إيقاف تدوين المراقب لعقدة المراقب. للقيام بذلك، أضِف الإعدادات التالية إلى أعلى
/opt/apigee/customer/application/zookeeper.properties
:conf_zoo_peertype=
-
عدِّل ملف
/opt/apigee/data/apigee-zookeeper/data/myid
على النحو التالي:- بالنسبة إلى
server.1
، غيِّر الإدخال داخلmyid
من 4 إلى 1. - بالنسبة إلى
server.2
، غيِّرmyid
من 5 إلى 2. - بالنسبة إلى
server.3
، غيِّرmyid
من 6 إلى 3.
- بالنسبة إلى
- أعِد تشغيل عُقد ZooKeeper في المنطقة التي أعدت فيها ضبط ZooKeeper تجميع.
- كرِّر الإعداد أعلاه من الخطوة رقم 1 (ب) إلى الخطوة رقم 5 على جميع عُقد ZooKeeper في وDC-2.
- تحقق من أن العُقد موجودة في البداية:
$ echo srvr | nc zk04wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk05wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk06wo.us-wo.4.apigee.com 2181
سيحتوي ناتج هذا الأمر على سطر مكتوب عليه "mode" متبوعًا بكلمة "قائد" إذا كانت هو القائد أو "المتابع" إذا كان متابعًا
عند إعادة تأسيس الشبكة بين مراكز البيانات، تهيئات ZooKeeper يمكن التراجع عن التغييرات في عُقد ZooKeeper في DC-2.
الحل رقم 3
- إذا لم يتم بدء عُقد ZooKeeper في المجموعة، يُرجى إعادة تشغيلها.
- تحقق من سجلات ZooKeeper لتحديد سبب تعطُّل عقدة ZooKeeper.
تتوفّر سجلات ZooKeeper في الدليل التالي:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
- تواصَل مع فريق دعم Apigee وقدِّم يسجّل ZooKeeper سبب أي عقدة ZooKeeper ربما تم إيقافها.
عقدة ZooKeeper لا تعرض الطلبات
قد تصبح عقدة ZooKeeper في المجموعة غير صحية وقد تكون غير قادرة على الاستجابة للعميل الطلبات. قد يعود السبب في ذلك إلى أحد الأسباب التالية:
- تم إيقاف العقدة بدون إعادة تشغيلها.
- تمت إعادة تشغيل العقدة بدون تفعيل التشغيل التلقائي.
- أدى حمل النظام على العقدة إلى انخفاضها أو كونها غير سليمة.
التشخيص
- نفِّذ أوامر التحقق من الصحة التالية في ZooKeeper على كل عقدة ZooKeeper
التحقق من الإخراج:
-
$ echo "ruok" | nc localhost 2181
مثال على الإخراج:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
تحقق من الوضع لتحديد ما إذا كانت عقدة ZooKeeper هي قائد أو متابع.
مثال على ناتج عقدة ZooKeeper واحدة متكاملة:
$ echo srvr | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Latency min/avg/max: 0/0/88 Received: 4206601 Sent: 4206624 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo mntr | nc localhost 2181
يسرد هذا الأمر متغيرات ZooKeeper التي يمكن استخدامها للتحقق من حالة مجموعة ZooKeeper.
مثال على الإخراج:
$ echo mntr | nc localhost 2181 zk_version 3.4.5-1392090, built on 09/30/2012 17:52 GMT zk_avg_latency 0 zk_max_latency 88 zk_min_latency 0 zk_packets_received 4206750 zk_packets_sent 4206773 zk_num_alive_connections 8 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 282 zk_watch_count 194 zk_ephemerals_count 1 zk_approximate_data_size 22960 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 4096
-
$ echo stat | nc localhost 2181
يسرد هذا الأمر إحصاءات عن الأداء والعملاء المتصلين.
مثال على الإخراج:
$ echo stat | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /10.128.0.8:54152[1](queued=0,recved=753379,sent=753385) /10.128.0.8:53944[1](queued=0,recved=980269,sent=980278) /10.128.0.8:54388[1](queued=0,recved=457094,sent=457094) /10.128.0.8:54622[1](queued=0,recved=972938,sent=972938) /10.128.0.8:54192[1](queued=0,recved=150843,sent=150843) /10.128.0.8:44564[1](queued=0,recved=267332,sent=267333) /127.0.0.1:40820[0](queued=0,recved=1,sent=0) /10.128.0.8:53960[1](queued=0,recved=150844,sent=150844) Latency min/avg/max: 0/0/88 Received: 4206995 Sent: 4207018 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo cons | nc localhost 2181
يقدِّم هذا الأمر تفاصيل موسّعة عن اتصالات ZooKeeper.
مثال على الإخراج:
$ echo cons | nc localhost 2181 /127.0.0.1:40864[0](queued=0,recved=1,sent=0) /10.128.0.8:54152[1](queued=0,recved=753400,sent=753406,sid=0x15d521a96d40007, lop=PING,est=1500321588647,to=40000,lcxid=0x972e9,lzxid=0x745,lresp=1502334173174, llat=0,minlat=0,avglat=0,maxlat=26) /10.128.0.8:53944[1](queued=0,recved=980297,sent=980306,sid=0x15d521a96d40005, lop=PING,est=1500321544896,to=40000,lcxid=0xce92a,lzxid=0x745,lresp=1502334176055, llat=0,minlat=0,avglat=0,maxlat=23) /10.128.0.8:54388[1](queued=0,recved=457110,sent=457110,sid=0x15d521a96d4000a, lop=PING,est=1500321673852,to=40000,lcxid=0x4dbe3,lzxid=0x745,lresp=1502334174245, llat=0,minlat=0,avglat=0,maxlat=22) /10.128.0.8:54622[1](queued=0,recved=972967,sent=972967,sid=0x15d521a96d4000b, lop=PING,est=1500321890175,to=40000,lcxid=0xccc9d,lzxid=0x745,lresp=1502334182417, llat=0,minlat=0,avglat=0,maxlat=88) /10.128.0.8:54192[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40008, lop=PING,est=1500321591985,to=40000,lcxid=0x8,lzxid=0x745,lresp=1502334184475, llat=3,minlat=0,avglat=0,maxlat=19) /10.128.0.8:44564[1](queued=0,recved=267354,sent=267355,sid=0x15d521a96d4000d, lop=PING,est=1501606633426,to=40000,lcxid=0x356e2,lzxid=0x745,lresp=1502334182315, llat=0,minlat=0,avglat=0,maxlat=35) /10.128.0.8:53960[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40006, lop=PING,est=1500321547138,to=40000,lcxid=0x5,lzxid=0x745,lresp=1502334177036, llat=1,minlat=0,avglat=0,maxlat=20)
إذا كان أي من آخر 3 أوامر للتحقّق من الصحة يعرض الرسالة التالية:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
ثم يشير إلى أن عُقد ZooKeeper المحددة لا تُقدم الطلبات.
-
- تحقق من سجلات ZooKeeper في العقدة المحددة وحاول تحديد أي أخطاء تتسبب في
ZooKeeper. تتوفّر سجلات ZooKeeper في الدليل التالي:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
الدقة
- أعِد تشغيل جميع عُقد ZooKeeper الأخرى في المجموعة الواحدة تلو الأخرى.
- أعد تشغيل أوامر التحقق من الصحة في ZooKeeper على كل عقدة ومعرفة ما إذا كنت تحصل على المعدل المتوقع الإخراج.
يُرجى التواصل مع فريق دعم Apigee لتحديد سبب المشكلة وحلّها. إلى تحميل النظام في حالة استمراره أو إذا لم تؤدي إعادة التشغيل إلى حل المشكلة.