أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
يمكن أن تظهر مشاكل إمكانية الاتصال في ZooKeeper على شكل أعراض مختلفة، مثل:
- أخطاء نشر الخادم الوكيل لواجهة برمجة التطبيقات
- تعذُّر طلبات البيانات من Management API وظهور أخطاء 5XX
- تعذُّر بدء تشغيل أجهزة التوجيه أو معالِجات الرسائل
- تسجّل مكوّنات "إحصاءات Google" فقدان الاتصال بـ 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]
- قد تعرض واجهة مستخدم New 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.
الحلّ 1
- يمكنك العمل مع المشرفين على الشبكة لإصلاح مشكلة الاتصال بالشبكة بين مراكز البيانات.
- عندما تتمكّن مجموعة ZooKeeper من التواصل عبر مراكز البيانات واختيار قائد ZooKeeper، من المفترض أن تصبح العُقد سليمة وقادرة على معالجة الطلبات.
الحلّ 2
- إذا كان إصلاح الاتصال بالشبكة سيستغرق وقتًا طويلاً، يمكنك إعادة ضبط عُقد 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\
في المثال أعلاه، تتم إزالة العُقد من US-East، ويتم ترقية عُقد US-West إلى عُقد تصويت عند إزالة التعليق التوضيحي
: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" (الوضع) متبوعًا بـ "leader" (القائد) إذا كان هو القائد، أو "follower" (التابع) إذا كان تابعًا.
وعند إعادة إنشاء الشبكة بين مراكز البيانات، يمكن إلغاء تغييرات إعدادات 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)
إذا ظهرت الرسالة التالية في أي من أوامر التحقّق من السلامة الثلاثة الأخيرة:
$ 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 لتحديد المشاكل وحلّها المتعلقة بسبب تحميل النظام إذا استمرّت المشكلة أو إذا لم تؤدِّ عمليات إعادة التشغيل إلى حلّها.