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

คุณกำลังดูเอกสารประกอบ 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 = []};

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

สาเหตุทั่วไปของข้อผิดพลาดนี้คือปัญหาการเชื่อมต่อเครือข่ายระหว่างตัวประมวลผลข้อความ และ 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)

    ตัวอย่างข้อผิดพลาดจากบันทึก 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. หากได้รับการตอบกลับ "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" ทีมปฏิบัติการเครือข่าย ไปที่ส่วนการแก้ปัญหาด้านล่าง
  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