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

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

תיאור הבעיה

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

הודעות שגיאה

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 בענן הפרטי יכולים לבצע את השלבים הבאים. אם נמצאים ב-Edge Public Cloud, צריך לפנות לתמיכה של Apigee Edge.

  1. מקבלים את הפלט של סטטוס הפריסה של ה-API הספציפי שמציג את השגיאה באמצעות הקריאה הבאה ל-Management 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. בדיקת הקישוריות ממעבד ההודעות לשרתי ZoomKeeper ביציאה 2181 באמצעות השלבים הבאים:
      1. אם telnet זמין, משתמשים ב-telnet:
        telnet <ZooKeeper-IP> 2181
        
      2. אם telnet לא זמין, משתמשים ב-netcat כדי לבדוק את הקישוריות באופן הבא:
        nc -vz <ZooKeeper-IP> 2181
        
      3. אם מופיעה התשובה "החיבור נדחה" או 'תם פרק הזמן שהוקצב להתחברות', בצוות תפעול הרשת. ניתן לעבור לקטע פתרון בהמשך.
  4. אם נתקלתם בבעיה אחרת, עליכם לפנות לתמיכה של Apigee Edge.

רזולוציה

הערה: רק משתמשי Edge בענן הפרטי יכולים לבצע את השלבים הבאים. אם נמצאים ב-Edge Public Cloud, צריך לפנות לתמיכה של Apigee Edge.

  1. ניתן לעבוד עם צוות הרשת כדי:
      1. צריך לוודא שיש קישוריות בין מעבד ההודעות לכל המוצרים של ZoomKeeper צמתים ביציאה 2181.
      2. מסירים הגבלות חומת אש או כללי אבטחה ממעבדי ההודעות אל לאפשר קישוריות ליציאה 2181 בשרתי ZoomKeeper.
    1. אם יש בעיית רשת במעבד ההודעות, ואז להפעיל מחדש את מעבד ההודעות שמציג את השגיאה (בהתאם לפלט של סטטוס הפריסה) עשוי לתקן את בעיה. מפעילים מחדש את מעבד ההודעות הספציפי:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      

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