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

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

ลักษณะปัญหา

การติดตั้งใช้งานการแก้ไขพร็อกซี API ผ่าน Edge UI หรือ 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 = []};

สาเหตุที่เป็นไปได้

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

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