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