حدث خطأ أثناء استرجاع العناصر الثانوية للمسار

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

المشكلة

تعذّر نشر مراجعات الخادم الوكيل لواجهة برمجة التطبيقات من خلال واجهة مستخدم Edge أو واجهة برمجة تطبيقات إدارة Edge، وظهرت رسالة الخطأ ZooKeeper "حدث خطأ أثناء استرجاع العناصر الثانوية للمسار".

رسائل الخطأ

Error in deployment for environment prod. 
The revision is deployed, but traffic cannot flow. com.apigee.repository.RepositoryException{ code = repository.zookeeper.UnExpectedError, message = Unexpected error Error while fetching children for path : /organizations/myorg/environments/prod/apiproxies/tinkerbell/revisions, associated contexts = []};

الأسباب المحتملة

السبب النموذجي لهذا الخطأ هو مشكلة في الاتصال بالشبكة بين معالج الرسائل وZooKeeper.

التشخيص

ملاحظة: يمكن لمستخدمي Edge Private Cloud فقط تنفيذ الخطوات التالية. إذا كنت تستخدم Edge Public Cloud، يُرجى التواصل مع فريق دعم Apigee Edge.

  1. احصل على نتيجة حالة النشر لواجهة برمجة التطبيقات المحدّدة التي تعرض الخطأ باستخدام طلب البيانات من واجهة برمجة التطبيقات للإدارة التالي:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    يعرض ناتج حالة النشر النموذجي الخطأ:

    { 
    "environment" : [ { 
    "name" : "prod", 
    "revision" : [ { 
    "configuration" : { 
    "basePath" : "/", 
    "steps" : [ ] 
    }, 
    "name" : "1", 
    "server" : [ { 
    "error" : "com.apigee.repository.RepositoryException: com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorFetchingChildren, message = Error while fetching children for path : /organizations/gsc/environments/prod/apiproxies/apigee_test/revisions, associated contexts = []}", 
    "status" : "error", 
    "type" : [ "message-processor" ], 
    "uUID" : "01fc5b23-8ad3-40bf-b059-2fc82cdac111" 
    },
    
  2. تحقَّق من معالج الرسائل (/opt/apigee/var/log/edge-message-processor/system.log).

    نموذج خطأ من سجلّ "معالج الرسائل"

    2017-05-29 01:25:40,592  main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : WebService
    com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-2/pods/gateway/servers/099c2603-93a4-4b73-ae03-a55d130adb80/reachable
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:410) ~[zookeeper-1.0.0.jar:na]
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:394) ~[zookeeper-1.0.0.jar:na]
            at com.apigee.services.repository.zookeeper.ZKRepository.exists(ZKRepository.java:280) ~[repository-impl-1.0.0.jar:na]
            at com.apigee.services.repository.RepositoryServiceImpl.exists(RepositoryServiceImpl.java:234) ~[repository-impl-1.0.0.jar:na]
            at com.apigee.registration.info.StatusBuilder.build(StatusBuilder.java:26) ~[registration-1.0.0.jar:na]
            at com.apigee.registration.ServerRegistrationServiceImpl.buildServerInfo(ServerRegistrationServiceImpl.java:856) ~[registration-1.0.0.jar:na]
            at com.apigee.registration.ServerRegistrationServiceImpl.start(ServerRegistrationServiceImpl.java:122) ~[registration-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.startService(ServiceDeployer.java:167) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:70) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deployDependantServices(ServiceDeployer.java:356) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:76) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deployDependantServices(ServiceDeployer.java:356) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:76) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.deployAll(MicroKernel.java:178) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.start(MicroKernel.java:139) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.start(MicroKernel.java:135) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.main(MicroKernel.java:84) [microkernel-1.0.0.jar:na]
    Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /regions/dc-2/pods/gateway/servers/099c2603-93a4-4b73-ae03-a55d130adb80/reachable
            at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1073) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:402) ~[zookeeper-1.0.0.jar:na]
            ... 16 common frames omitted
    
  3. إذا لاحظت خطأً مشابهًا كما هو موضّح في المثال أعلاه، يمكنك اتّباع الخطوات التالية:
    1. اختبِر الاتصال من معالج الرسائل بخوادم ZooKeeper على المنفذ 2181 باستخدام الخطوات التالية:
      1. إذا كان telnet متاحًا، استخدِم telnet:
        telnet <ZooKeeper-IP> 2181
        
      2. إذا لم يكن telnet متاحًا، استخدم netcat للتحقق من الاتصال على النحو التالي:
        nc -vz <ZooKeeper-IP> 2181
        
      3. إذا تلقّيت الرد "تم رفض الاتصال" أو "انقضت مهلة الاتصال"، عليك التواصل مع فريق عمليات الشبكة. انتقِل إلى قسم الحل أدناه.
  4. إذا لاحظت أي مشكلة أخرى، يُرجى التواصل مع فريق دعم Apigee Edge.

درجة الدقّة

ملاحظة: يمكن لمستخدمي Edge Private Cloud فقط تنفيذ الخطوات التالية. إذا كنت تستخدم Edge Public Cloud، يُرجى التواصل مع فريق دعم Apigee Edge.

  1. العمل مع فريق الشبكة لإجراء ما يلي:
      1. تأكَّد من السماح بالاتصال بين "معالج الرسائل" وجميع عُقد ZooKeeper على المنفذ 2181.
      2. إزالة أي قيود جدار حماية أو قواعد أمان تم إعدادها من معالِجات الرسائل للسماح بالاتصال بالمنفذ 2181 على خوادم ZooKeeper
    1. إذا كانت هناك مشكلة في الشبكة في معالج الرسائل، قد تؤدي إعادة تشغيل معالج الرسائل المحدد الذي يعرض الخطأ (وفقًا لمخرجات حالة النشر) إلى حل المشكلة. أعِد تشغيل معالج الرسائل المحدّد:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    في حال استمرار المشكلة، يُرجى التواصل مع فريق دعم Apigee Edge.