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

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

علامت

استقرار نسخه‌های پروکسی API از طریق رابط کاربری Edge یا API مدیریت 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. خروجی وضعیت استقرار را برای 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 روی پورت ۲۱۸۱ را با استفاده از مراحل زیر آزمایش کنید:
      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 روی پورت ۲۱۸۱ مجاز است.
      2. هرگونه محدودیت فایروال یا تنظیمات قوانین امنیتی را از پردازشگرهای پیام حذف کنید تا امکان اتصال به پورت ۲۱۸۱ در سرورهای ZooKeeper فراهم شود.
    1. اگر مشکل شبکه در پردازنده پیام وجود دارد، راه‌اندازی مجدد پردازنده پیام خاصی که خطا را نشان می‌دهد (مطابق با خروجی وضعیت استقرار) ممکن است مشکل را برطرف کند. پردازنده پیام خاص را مجدداً راه‌اندازی کنید:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    اگر مشکل همچنان ادامه داشت، با پشتیبانی Apigee Edge تماس بگیرید.