คุณกำลังดูเอกสารประกอบ 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
- รับเอาต์พุตสถานะการทำให้ใช้งานได้สำหรับ 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" },
- ตรวจสอบระบบประมวลผลข้อความ
(
/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
- หากคุณสังเกตเห็นข้อผิดพลาดที่คล้ายกันดังที่แสดงในตัวอย่างด้านบน ให้ดำเนินการต่อไปนี้
ขั้นตอน:
- ทดสอบการเชื่อมต่อจาก Message Processor ไปยังเซิร์ฟเวอร์ ZooKeeper บนพอร์ต 2181
โดยทำตามขั้นตอนต่อไปนี้
- หากมีให้ใช้ telnet ให้ใช้ telnet
telnet <ZooKeeper-IP> 2181
- หาก telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อ ดังนี้
nc -vz <ZooKeeper-IP> 2181
- หากได้รับการตอบกลับ "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" ทีมปฏิบัติการเครือข่าย ไปที่ส่วนการแก้ปัญหาด้านล่าง
- หากมีให้ใช้ telnet ให้ใช้ telnet
- ทดสอบการเชื่อมต่อจาก Message Processor ไปยังเซิร์ฟเวอร์ ZooKeeper บนพอร์ต 2181
โดยทำตามขั้นตอนต่อไปนี้
- หากพบปัญหาใดๆ โปรดติดต่อทีมสนับสนุนของ Apigee Edge
ความละเอียด
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
- โดยทำงานร่วมกับทีมเครือข่ายของคุณเพื่อดำเนินการต่อไปนี้
-
- ตรวจสอบว่าอนุญาตให้เชื่อมต่อ Message Processor และ ZooKeeper ทั้งหมด บนพอร์ต 2181
- นำการจำกัดไฟร์วอลล์หรือการตั้งค่ากฎความปลอดภัยออกจากตัวประมวลผลข้อความเพื่อ อนุญาตให้เชื่อมต่อกับพอร์ต 2181 บนเซิร์ฟเวอร์ ZooKeeper
- ถ้าเกิดปัญหากับเครือข่ายที่ตัวประมวลผลข้อความ ให้รีสตาร์ทเครื่อง
ตัวประมวลผลข้อความที่แสดงข้อผิดพลาด (ตามเอาต์พุตสถานะการทำให้ใช้งานได้) อาจแก้ไขข้อผิดพลาด
ปัญหา รีสตาร์ทโปรเซสเซอร์ข้อความที่ต้องการ
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
หากยังคงพบปัญหาอยู่ ให้ติดต่อทีมสนับสนุนของ Apigee Edge
-