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

أنت تعرض مستندات 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 Support.

  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 Support.

الدقة

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

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

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