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.
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 giao diện người dùng Edge hoặc API quản lý Edge với lỗi ZooKeeper "Error khi tìm nạp 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ể 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 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 Edge Public Cloud, hãy liên hệ với Apigee Edge Support.

  1. Nhận dữ liệu đầu ra về trạng thái triển khai của API cụ thể hiển thị 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ả về 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 Bộ xử lý thư (/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
    
  3. Nếu bạn nhận thấy lỗi tương tự như trong ví dụ trên, hãy làm theo các bước sau:
    1. Kiểm tra kết nối từ Bộ xử lý thông báo với máy chủ ZooKeeper trên cổng 2181 theo các bước sau:
      1. Nếu có thể dùng 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 kết nối như sau:
        nc -vz <ZooKeeper-IP> 2181
        
      3. 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 liên hệ với nhóm điều 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ỳ dấu hiệu nào khác, hãy liên hệ với Nhóm hỗ trợ Apigee.

Độ 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 Edge Public Cloud, hãy liên hệ với Apigee Edge Support.

  1. Làm việc với nhóm phụ trách mạng lưới của bạn để:
      1. Đảm bảo 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 giới hạn tường lửa hoặc quy tắc bảo mật được thiết lập khỏi Bộ xử lý thư để cho phép kết nối với cổng 2181 trên máy chủ ZooKeeper.
    1. Nếu có sự cố mạng trên Bộ xử lý thông báo, việc khởi động lại Bộ xử lý thông báo cụ thể hiển thị lỗi (theo kết quả đầu ra trạng thái triển khai) có thể khắc phục được sự cố. Khởi động lại Bộ 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ợ của Apigee.