เกิดข้อผิดพลาดขณะดึงข้อมูลย่อยสำหรับเส้นทาง

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

ลักษณะปัญหา

การติดตั้งใช้งานการแก้ไขพร็อกซี API ผ่าน UI ของ Edge หรือ Edge Management API ล้มเหลวโดยมี ข้อผิดพลาด ZooKeeper "Error while fetching children for path"

ข้อความแสดงข้อผิดพลาด

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 Processor กับ ZooKeeper

การวินิจฉัย

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่ทำตามขั้นตอนต่อไปนี้ได้ หากคุณ ใช้ 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. ตรวจสอบ Message Processor (/opt/apigee/var/log/edge-message-processor/system.log)

    ตัวอย่างข้อผิดพลาดจากบันทึกของ Message Processor

    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. ทดสอบการเชื่อมต่อจาก Message Processor ไปยังเซิร์ฟเวอร์ ZooKeeper บนพอร์ต 2181 โดยทำตามขั้นตอนต่อไปนี้:
      1. หาก telnet พร้อมใช้งาน ให้ใช้ telnet ดังนี้
        telnet <ZooKeeper-IP> 2181
      2. หาก telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อดังนี้
        nc -vz <ZooKeeper-IP> 2181
      3. หากได้รับคำตอบ "Connection Refused" หรือ "Connection timed out" โปรดติดต่อทีมปฏิบัติการเครือข่าย ไปที่ส่วนวิธีแก้ปัญหา ด้านล่าง
  4. หากพบข้อผิดพลาดอื่นๆ โปรดติดต่อทีมสนับสนุนของ Apigee Edge

วิธีแก้ปัญหา

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่ทำตามขั้นตอนต่อไปนี้ได้ หากคุณ ใช้ Edge Public Cloud โปรดติดต่อ ทีมสนับสนุนของ Apigee Edge

  1. ทำงานร่วมกับทีมเครือข่ายเพื่อดำเนินการต่อไปนี้
      1. ตรวจสอบว่าอนุญาตการเชื่อมต่อระหว่าง Message Processor กับโหนด ZooKeeper ทั้งหมดบนพอร์ต 2181
      2. นำข้อจำกัดของไฟร์วอลล์หรือกฎความปลอดภัยที่ตั้งค่าจาก Message Processor ออกเพื่อ อนุญาตการเชื่อมต่อกับพอร์ต 2181 บนเซิร์ฟเวอร์ ZooKeeper
    1. หากเกิดปัญหาเครือข่ายใน Message Processor การรีสตาร์ท Message Processor ที่เฉพาะเจาะจง ซึ่งแสดงข้อผิดพลาด (ตามเอาต์พุตสถานะการติดตั้งใช้งาน) อาจช่วยแก้ปัญหาได้ รีสตาร์ท Message Processor ที่เฉพาะเจาะจงโดยทำดังนี้
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    หากยังพบปัญหาอยู่ โปรดติดต่อทีมสนับสนุนของ Apigee Edge