أخطاء فقدان اتصال حديقة الحيوان

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

المشكلة

يمكن أن تظهر مشاكل إمكانية الاتصال في ZooKeeper على شكل أعراض مختلفة، مثل:

  1. أخطاء نشر الخادم الوكيل لواجهة برمجة التطبيقات
  2. تعذُّر طلبات البيانات من Management API وظهور أخطاء 5XX
  3. تعذُّر بدء تشغيل أجهزة التوجيه أو معالِجات الرسائل
  4. تسجّل مكوّنات "إحصاءات Google" فقدان الاتصال بـ ZooKeeper في system.logs

رسائل الخطأ

في ما يلي أمثلة على رسائل الخطأ التي قد تظهر عند فقدان الاتصال بعُقد ZooKeeper.

  1. يتم عرض الخطأ التالي في سجلّات خادم الإدارة عند تعذُّر نشر الخادم الوكيل لواجهة برمجة التطبيقات بسبب فقدان اتصال 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
  2. أثناء بدء التشغيل، تتصل أجهزة التوجيه ومعالجات الرسائل بـ 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]
  3. قد تعرض واجهة مستخدم 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

  1. يمكنك العمل مع المشرفين على الشبكة لإصلاح مشكلة الاتصال بالشبكة بين مراكز البيانات.
  2. عندما تتمكّن مجموعة ZooKeeper من التواصل عبر مراكز البيانات واختيار قائد ZooKeeper، من المفترض أن تصبح العُقد سليمة وقادرة على معالجة الطلبات.

الحلّ 2

  1. إذا كان إصلاح الاتصال بالشبكة سيستغرق وقتًا طويلاً، يمكنك إعادة ضبط عُقد ZooKeeper في المنطقة التي توقفت فيها كحلّ بديل. على سبيل المثال، يمكنك إعادة ضبط مجموعة ZooKeeper في DC-2 بحيث تكون عُقد ZooKeeper الثلاث في هذه المنطقة كلها ناخبين وإزالة server.# في zoo.cfg من ZooKeepers من منطقة DC-1.
    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
    2. باستخدام الرمز مع الإعدادات، أنشِئ ملفًا باسم /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.

  2. الاحتفاظ بنسخة احتياطية من /opt/apigee/apigee-zookeeper/conf/zoo.cfg و/opt/apigee/customer/application/zookeeper.properties القديم

    سيتم استخدام هذه الملفات لاستعادة الإعدادات التلقائية عند استعادة الاتصال بالشبكة بين مراكز البيانات.

  3. إيقاف تدوين المراقب لعقدة المراقب لإجراء ذلك، أضِف الإعدادات التالية إلى أعلى /opt/apigee/customer/application/zookeeper.properties:

    conf_zoo_peertype=
  4. عدِّل ملف /opt/apigee/data/apigee-zookeeper/data/myid على النحو التالي:

    • بالنسبة إلى server.1، غيِّر الإدخال داخل myid من 4 إلى 1.
    • بالنسبة إلى server.2، غيِّر myid من 5 إلى 2.
    • بالنسبة إلى server.3، غيِّر myid من 6 إلى 3.
  5. أعِد تشغيل عُقد ZooKeeper في المنطقة التي أعدت فيها ضبط مجموعة ZooKeeper.
  6. كرِّر الإعدادات أعلاه من الخطوة رقم 1ب إلى الخطوة رقم 5 على جميع عُقد ZooKeeper في DC-2.
  7. تأكَّد من أنّ العُقد تعمل مع عقدة رئيسية:
    $ 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

  1. إذا لم يتم بدء تشغيل عُقد ZooKeeper في المجموعة، أعِد تشغيلها.
  2. تحقَّق من سجلّات 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
  3. تواصَل مع فريق دعم Apigee وقدِّم سجلّات ZooKeeper لتحديد المشاكل وحلّها وتحديد سبب توقّف أي عقدة ZooKeeper.

تعذُّر عرض الطلبات على عقدة ZooKeeper

قد تصبح عقدة ZooKeeper في المجموعة غير سليمة وغير قادرة على الاستجابة لطلبات العملاء. قد يرجع السبب إلى ما يلي:

  1. تم إيقاف العقدة بدون إعادة تشغيلها.
  2. تمت إعادة تشغيل العقدة بدون تفعيل ميزة "التشغيل التلقائي".
  3. أدّى حِمل النظام على العقدة إلى توقّفها أو عدم استقرارها.

التشخيص

  1. نفِّذ أوامر التحقّق من صحة ZooKeeper التالية على كل عقدة من عُقد ZooKeeper وتحقَّق من الناتج:
    1. $ echo "ruok" | nc localhost 2181

      مثال على الناتج:

      $ echo "ruok" | nc localhost 2181
      imok
    2. 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
    3. $ 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
    4. $ 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
    5. $ 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 لا تعالج الطلبات.

  2. تحقَّق من سجلّات 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

الدقة

  1. أعِد تشغيل جميع عُقد ZooKeeper الأخرى في المجموعة واحدًا تلو الآخر.
  2. أعِد تشغيل أوامر التحقّق من صحة ZooKeeper على كل عقدة وتحقّق مما إذا كنت تحصل على النتيجة المتوقعة.

يُرجى التواصل مع فريق الدعم في Apigee لتحديد المشاكل وحلّها المتعلقة بسبب تحميل النظام إذا استمرّت المشكلة أو إذا لم تؤدِّ عمليات إعادة التشغيل إلى حلّها.