Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Triệu chứng
Không triển khai được các bản sửa đổi proxy API thông qua Edge UI hoặc API quản lý Edge với Lỗi ZooKeeper "Lỗi khi tìm nạp con cho đường dẫn".
Thông báo lỗi
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 = []};
Nguyên nhân có thể xảy ra
Nguyên nhân thông thường gây ra lỗi này là sự cố kết nối mạng giữa Bộ xử lý thư và ZooKeeper.
Chẩn đoán
Lưu ý: Chỉ người dùng Edge Private Cloud mới có thể thực hiện các bước sau đây. Nếu bạn đang sử dụng Edge Public Cloud, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.
- Nhận kết quả về trạng thái triển khai cho API cụ thể cho thấy lỗi bằng cách sử dụng
lệnh gọi API quản lý sau đây:
curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
Kết quả đầu ra trạng thái triển khai mẫu cho thấy lỗi:
{ "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" },
- Kiểm tra Trình xử lý tin nhắn
(
/opt/apigee/var/log/edge-message-processor/system.log
).Lỗi mẫu trong nhật ký Trình xử lý thư
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
- Nếu bạn thấy một lỗi tương tự như trong ví dụ trên, hãy thực hiện các bước sau
các bước:
- Kiểm tra khả năng kết nối từ Trình xử lý thư đến máy chủ ZooKeeper trên cổng 2181
bằng cách làm theo các bước sau:
- Nếu có thể dùng telnet, hãy dùng telnet:
telnet <ZooKeeper-IP> 2181
- Nếu không có telnet, hãy sử dụng netcat để kiểm tra khả năng kết nối như sau:
nc -vz <ZooKeeper-IP> 2181
- Nếu bạn nhận được phản hồi "Kết nối bị từ chối" hoặc "Kết nối đã hết thời gian chờ", hãy thu hút nhóm vận hành mạng. Chuyển đến phần Độ phân giải bên dưới.
- Nếu có thể dùng telnet, hãy dùng telnet:
- Kiểm tra khả năng kết nối từ Trình xử lý thư đến máy chủ ZooKeeper trên cổng 2181
bằng cách làm theo các bước sau:
- Nếu bạn nhận thấy dấu hiệu khác, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.
Độ phân giải
Lưu ý: Chỉ người dùng Edge Private Cloud mới có thể thực hiện các bước sau đây. Nếu bạn đang sử dụng Edge Public Cloud, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.
- Hãy làm việc với nhóm mạng của bạn để:
-
- Đảm bảo cho phép kết nối giữa Trình xử lý thư và tất cả ZooKeeper các nút trên cổng 2181.
- Loại bỏ mọi hạn chế về tường lửa hoặc quy tắc bảo mật được thiết lập từ Trình xử lý thư tới cho phép kết nối để cổng 2181 trên máy chủ ZooKeeper.
- Nếu có sự cố mạng trên Bộ xử lý thư, hãy khởi động lại
Trình xử lý thông báo hiển thị lỗi (theo kết quả trạng thái triển khai) có thể khắc phục lỗi
vấn đề. Khởi động lại Trình xử lý thư cụ thể:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Nếu sự cố vẫn tiếp diễn, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.
-