שגיאה באחזור ילדים לנתיב

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

תיאור הבעיה

פריסת גרסאות ה-API של שרת ה-API דרך ממשק המשתמש של Edge או ממשק ה-API לניהול של Edge נכשלת ומוצגת השגיאה "ZoKeeper" "שגיאה בזמן אחזור צאצאים לנתיב".

הודעות שגיאה

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 = []};

סיבות אפשריות

הסיבה האופיינית לשגיאה הזו היא בעיה בקישוריות הרשת בין מעבד ההודעות (Message CPU) ל-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. בודקים את הקישוריות בין מעבד ההודעות לשרתי גן החיות שלzoKeeper ביציאה 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. צריך לוודא שיש קישוריות בין מעבד ההודעות לבין כל צומתי התאמות גן ביציאה 2181.
      2. צריך להסיר את כל ההגבלות של חומת האש או כללי האבטחה ממעבדי ההודעות כדי לאפשר קישוריות ליציאה 2181 בשרתי גן החיות.
    1. אם יש בעיה ברשת במעבד ההודעות, הפעלה מחדש של מעבד ההודעות הספציפי שמציג את השגיאה (בהתאם לפלט סטטוס הפריסה) עשויה לפתור את הבעיה. מפעילים מחדש את מעבד ההודעות הספציפי:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

    אם הבעיה נמשכת, יש לפנות לתמיכה של Apigee Edge.