خطا در واکشی فرزندان برای مسیر

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

علامت

استقرار ویرایش‌های پراکسی API از طریق رابط کاربری Edge یا Edge management API با خطای 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. خروجی وضعیت استقرار را برای API خاص دریافت کنید که خطا را با استفاده از فراخوانی مدیریت API زیر نشان می دهد:
    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. اگر پاسخ "اتصال رد شد" یا "وقت اتصال تمام شد" دریافت کردید، تیم عملیات شبکه خود را درگیر کنید. به بخش Resolution در زیر بروید.
  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 تماس بگیرید.