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 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.

  1. 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" 
    },
    
  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ý 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 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:
    1. 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:
      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 sử 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 "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.
  4. 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.

  1. Hãy làm việc với nhóm mạng của bạn để:
      1. Đả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.
      2. 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.
    1. 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.