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

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

المشكلة

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

  1. أخطاء نشر خادم وكيل واجهة برمجة التطبيقات
  2. إخفاق طلبات البيانات من واجهة برمجة التطبيقات للإدارة مع ظهور أخطاء 5XX
  3. فشل تشغيل أجهزة التوجيه أو معالِجات الرسائل
  4. تُبلغ مكونات Analytics عن فقدان اتصال 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. قد تعرض واجهة مستخدم 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. اعمل مع مشرفي الشبكات على إصلاح مشكلة اتصال الشبكة بين مراكز البيانات.
  2. عندما تتمكن مجموعة ZooKeeper من التواصل عبر مراكز البيانات واختيار قائد ZooKeeper، يجب أن تصبح العُقد سليمة وتكون قادرة على معالجة الطلبات.

الحل الثاني

  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\
      

    في ما سبق، تتم إزالة العُقد من شرق الولايات المتحدة، وترقيتها إلى المصوتين عند إزالة تعليق :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" متبوعًا بكلمة "قائد" إذا كانت هو القائد أو "المتابع" إذا كان متابعًا

    عند إعادة تأسيس الشبكة بين مراكز البيانات، تهيئات 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)
      

      إذا كان أي من آخر 3 أوامر للتحقّق من الصحة يعرض الرسالة التالية:

      $ 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 لتحديد سبب المشكلة وحلّها. إلى تحميل النظام في حالة استمراره أو إذا لم تؤدي إعادة التشغيل إلى حل المشكلة.