Lỗi khi tìm nạp phần tử con cho đường dẫn

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Dấu hiệu

Việc triển khai các bản sửa đổi của proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công do lỗi ZooKeeper "Error while fetching children for path" (Lỗi khi tìm nạp các phần tử 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ể dẫn đến vấn đề này

Nguyên nhân thường gặp gây ra lỗi này là do vấn đề về khả năng kết nối mạng giữa Trình xử lý thông báo 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. Nếu bạn đang sử dụng Đám mây công khai Edge, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

  1. Nhận đầu ra 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:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Đầ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" 
    },
  2. 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ý 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. Nếu bạn gặp lỗi tương tự như trong ví dụ trên, hãy thực hiện các bước sau:
    1. Kiểm tra khả năng kết nối từ Trình xử lý thông báo đến các máy chủ ZooKeeper trên cổng 2181 theo các bước sau:
      1. Nếu có telnet, hãy dùng telnet:
        telnet <ZooKeeper-IP> 2181
      2. Nếu không có telnet, hãy dùng netcat để kiểm tra khả năng kết nối như sau:
        nc -vz <ZooKeeper-IP> 2181
      3. Nếu bạn nhận được phản hồi "Connection Refused" (Kết nối bị từ chối) hoặc "Connection timed out" (Kết nối hết thời gian chờ), hãy liên hệ với nhóm vận hành mạng của bạn. Chuyển đến phần Giải pháp bên dưới.
  4. Nếu bạn nhận thấy bất kỳ vấn đề nào khác, hãy liên hệ với Nhóm 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. Nếu bạn đang sử dụng Đám mây công khai Edge, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

  1. Làm việc với nhóm mạng của bạn để:
      1. Đảm bảo rằng bạn cho phép kết nối giữa Trình xử lý thông báo và tất cả các nút ZooKeeper trên cổng 2181.
      2. Xoá 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ông báo để cho phép kết nối với cổng 2181 trên các máy chủ ZooKeeper.
    1. Nếu có vấn đề về mạng trên Trình xử lý tin nhắn, thì việc khởi động lại Trình xử lý tin nhắn cụ thể cho thấy lỗi (theo đầu ra trạng thái triển khai) có thể khắc phục vấn đề. Khởi động lại Trình xử lý tin nhắn cụ thể:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    Nếu vấn đề vẫn tiếp diễn, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.