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
Các vấn đề về kết nối ZooKeeper có thể biểu hiện dưới nhiều triệu chứng, chẳng hạn như:
- Lỗi triển khai proxy API
- Lệnh gọi API Quản lý không thực hiện được và gặp lỗi 5XX
- Bộ định tuyến hoặc Trình xử lý thông báo không khởi động được
- Các thành phần Analytics báo cáo tình trạng mất kết nối ZooKeeper trong system.logs
Thông báo lỗi
Sau đây là ví dụ về các thông báo lỗi có thể xuất hiện khi mất kết nối với(các) nút ZooKeeper.
- Lỗi sau đây sẽ xuất hiện trong nhật ký của Máy chủ quản lý khi quá trình triển khai API Proxy không thành công do mất kết nối ZooKeeper:
org: env: main INFO ZOOKEEPER - ZooKeeperServiceImpl.exists() : Retry path existence path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR ZOOKEEPER - ZooKeeperServiceImpl.exists() : Could not detect existence of path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable , reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR KERNEL.DEPLOYMENT - ServiceDeployer.startService() : ServiceDeployer.deploy() : Got a life cycle exception while starting service [ServerRegistrationService, Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable] : com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorCheckingPathExis tence, message = Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, associated contexts = []} 2015-03-25 10:22:39,811 org: env: main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : EventService com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:339) ~[zookeeper-1.0.0.jar:na] at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists( ZooKeeperServiceImpl.java:323) ~[zookeeper-1.0.0.jar:na] at ... snipped
- Trong quá trình khởi động, Bộ định tuyến và Bộ xử lý thông báo sẽ kết nối với ZooKeeper. Nếu có vấn đề về khả năng kết nối với ZooKeeper, thì các thành phần này sẽ không khởi động được và gặp lỗi sau:
2017-08-01 23:20:00,404 CuratorFramework-0 ERROR o.a.c.f.i.CuratorFrameworkImpl - CuratorFrameworkImpl.logError() : Background operation retry gave up org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkBackgroundRetry(CuratorFrameworkImpl.java:710) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:827) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275) [curator-framework-2.5.0.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
- Giao diện người dùng Edge có thể hiển thị lỗi sau đây cho biết rằng giao diện người dùng này không thể kiểm tra trạng thái triển khai của API Proxy:
Error Fetching Deployments Error while checking path existence for path: path
Các nguyên nhân có thể
Bảng sau đây liệt kê những nguyên nhân có thể gây ra vấn đề này:
| Nguyên nhân | Cho |
|---|---|
| Vấn đề về khả năng kết nối mạng trên nhiều trung tâm dữ liệu | Người dùng Edge Private Cloud |
| Nút ZooKeeper không xử lý các yêu cầu | Người dùng Edge Private Cloud |
Nhấp vào một đường liên kết trong bảng để xem các giải pháp có thể cho nguyên nhân đó.
Vấn đề về kết nối mạng trên nhiều trung tâm dữ liệu
Chẩn đoán
Một cụm ZooKeeper có thể có các nút trải rộng trên nhiều khu vực/trung tâm dữ liệu, chẳng hạn như DC-1 và DC-2. Cấu trúc liên kết điển hình của Apigee Edge 2 DC sẽ có:
- Các máy chủ ZooKeeper 1, 2 và 3 là các máy chủ bỏ phiếu trong DC-1
- ZooKeeper 4 và 5 là người bỏ phiếu, còn ZooKeeper 6 là người quan sát trong DC-2.
Nếu khu vực DC-1 ngừng hoạt động hoặc kết nối mạng giữa DC-1 và DC-2 bị gián đoạn, thì các nút ZooKeeper không thể bầu chọn một người dẫn đầu mới ở DC-2 và không thể giao tiếp với nút dẫn đầu. Các trình quan sát ZooKeeper không thể bầu một người lãnh đạo mới và 2 người bỏ phiếu còn lại trong DC-2 không có đủ số lượng tối thiểu là 3 nút bỏ phiếu để bầu một người lãnh đạo mới. Do đó, ZooKeeper trong DC-2 sẽ không thể xử lý bất kỳ yêu cầu nào. Các nút ZooKeeper còn lại trong DC-2 sẽ tiếp tục lặp lại việc thử kết nối lại với các nút bỏ phiếu của ZooKeeper để tìm nút chính.
Độ phân giải
Hãy áp dụng các giải pháp sau theo thứ tự được chỉ định để giải quyết vấn đề này.
Nếu bạn không thể giải quyết vấn đề sau khi thử các giải pháp này, vui lòng liên hệ với Nhóm hỗ trợ Apigee.
Giải pháp 1
- Làm việc với quản trị viên mạng để khắc phục vấn đề về khả năng kết nối mạng giữa các trung tâm dữ liệu.
- Khi nhóm ZooKeeper có thể giao tiếp trên các trung tâm dữ liệu và bầu ra một người lãnh đạo ZooKeeper, các nút sẽ trở nên ổn định và có thể xử lý các yêu cầu.
Giải pháp 2
- Nếu phải mất thời gian để sửa chữa kết nối mạng, thì giải pháp tạm thời là định cấu hình lại các nút ZooKeeper ở khu vực nơi các nút này ngừng hoạt động. Ví dụ: định cấu hình lại cụm ZooKeeper trong DC-2 để 3 nút ZooKeeper trong khu vực này đều là người bỏ phiếu và xoá
server.#trongzoo.cfgcủa ZooKeeper khỏi khu vực DC-1.- Trong ví dụ sau,
zoo.cfgđịnh cấu hình các nút cho 2 khu vực, trong đó DC-1 sử dụng tên máy chủus-eabiểu thị khu vực Miền Đông Hoa Kỳ và DC-2 sử dụng tên máy chủus-wobiểu thị khu vực Miền Tây Hoa Kỳ. (LƯU Ý: Chỉ những cấu hình có liên quan mới xuất hiện):server.1=zk01ea.us-ea.4.apigee.com:2888:3888 server.2=zk02ea.us-ea.4.apigee.com:2888:3888 server.3=zk03ea.us-ea.4.apigee.com:2888:3888 server.4=zk04wo.us-wo.4.apigee.com:2888:3888 server.5=zk05wo.us-wo.4.apigee.com:2888:3888 server.6=zk06wo.us-wo.4.apigee.com:2888:3888:observer
Trong ví dụ trên, hãy định cấu hình lại
zoo.cfgnhư sau:server.1=zk04wo.us-wo.4.apigee.com:2888:3888 server.2=zk05wo.us-wo.4.apigee.com:2888:3888 server.3=zk06wo.us-wo.4.apigee.com:2888:3888
- Sử dụng mã có cấu hình, hãy tạo một tệp
/opt/apigee/customer/application/zookeeper.propertiescó nội dung sau:conf_zoo_quorum=server.1=zk04wo.us-wo.4.apigee.com:2888:3888\ \nserver.2=zk05wo.us-wo.4.apigee.com:2888:3888\ \nserver.3=zk06wo.us-wo.4.apigee.com:2888:3888\
Trong ví dụ trên, các nút từ US-East sẽ bị xoá và các nút US-West sẽ được thăng cấp thành cử tri khi chú thích
:observerbị xoá. - Trong ví dụ sau,
- Sao lưu
/opt/apigee/apigee-zookeeper/conf/zoo.cfgvà/opt/apigee/customer/application/zookeeper.propertiescũ.Các tệp này sẽ được dùng để khôi phục các giá trị mặc định khi kết nối mạng được khôi phục giữa các trung tâm dữ liệu.
Tắt ký hiệu trình quan sát cho nút trình quan sát. Để thực hiện việc này, hãy thêm cấu hình sau vào đầu
/opt/apigee/customer/application/zookeeper.properties:conf_zoo_peertype=
-
Chỉnh sửa tệp
/opt/apigee/data/apigee-zookeeper/data/myidnhư sau:- Đối với
server.1, hãy thay đổi mục nhập bên trongmyidtừ 4 thành 1. - Đối với
server.2, hãy thay đổimyidtừ 5 thành 2. - Đối với
server.3, hãy thay đổimyidtừ 6 thành 3.
- Đối với
- Khởi động lại các nút ZooKeeper trong khu vực mà bạn đã định cấu hình lại cụm ZooKeeper.
- Lặp lại cấu hình trên từ bước 1b đến bước 5 trên tất cả các nút ZooKeeper trong DC-2.
- Xác thực các nút đang hoạt động với một nút chính:
$ echo srvr | nc zk04wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk05wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk06wo.us-wo.4.apigee.com 2181
Đầu ra của lệnh này sẽ chứa một dòng có nội dung "mode" (chế độ) theo sau là "leader" (trưởng nhóm) nếu đó là trưởng nhóm hoặc "follower" (thành viên) nếu đó là thành viên.
Khi mạng giữa các trung tâm dữ liệu được thiết lập lại, các thay đổi về cấu hình ZooKeeper có thể được hoàn nguyên trên các nút ZooKeeper trong DC-2.
Giải pháp 3
- Nếu(các) nút ZooKeeper trong cụm chưa khởi động, hãy khởi động lại nút đó.
- Kiểm tra nhật ký ZooKeeper để xác định lý do khiến nút ZooKeeper ngừng hoạt động.
Nhật ký ZooKeeper có trong thư mục sau:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
- Liên hệ với Nhóm hỗ trợ Apigee và cung cấp nhật ký ZooKeeper để khắc phục nguyên nhân của mọi nút ZooKeeper có thể đã bị dừng.
Nút ZooKeeper không xử lý các yêu cầu
Một nút ZooKeeper trong nhóm có thể trở nên không ổn định và không thể phản hồi các yêu cầu của ứng dụng khách. Lý do có thể là:
- Nút đã dừng mà không khởi động lại.
- Nút đã được khởi động lại mà không bật tính năng tự động khởi động.
- Tải hệ thống trên nút khiến nút ngừng hoạt động hoặc ở trạng thái không tốt.
Chẩn đoán
- Thực thi các lệnh kiểm tra tình trạng của ZooKeeper sau đây trên từng nút ZooKeeper và kiểm tra đầu ra:
-
$ echo "ruok" | nc localhost 2181
Ví dụ về đầu ra:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Kiểm tra chế độ để xác định xem nút ZooKeeper là nút chính hay nút phụ.
Ví dụ về đầu ra cho một nút ZooKeeper duy nhất, tất cả trong một:
$ echo srvr | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Latency min/avg/max: 0/0/88 Received: 4206601 Sent: 4206624 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo mntr | nc localhost 2181
Lệnh này liệt kê các biến ZooKeeper có thể dùng để kiểm tra tình trạng của cụm ZooKeeper.
Ví dụ về đầu ra:
$ echo mntr | nc localhost 2181 zk_version 3.4.5-1392090, built on 09/30/2012 17:52 GMT zk_avg_latency 0 zk_max_latency 88 zk_min_latency 0 zk_packets_received 4206750 zk_packets_sent 4206773 zk_num_alive_connections 8 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 282 zk_watch_count 194 zk_ephemerals_count 1 zk_approximate_data_size 22960 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 4096
-
$ echo stat | nc localhost 2181
Lệnh này liệt kê số liệu thống kê về hiệu suất và các máy khách được kết nối.
Ví dụ về đầu ra:
$ echo stat | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /10.128.0.8:54152[1](queued=0,recved=753379,sent=753385) /10.128.0.8:53944[1](queued=0,recved=980269,sent=980278) /10.128.0.8:54388[1](queued=0,recved=457094,sent=457094) /10.128.0.8:54622[1](queued=0,recved=972938,sent=972938) /10.128.0.8:54192[1](queued=0,recved=150843,sent=150843) /10.128.0.8:44564[1](queued=0,recved=267332,sent=267333) /127.0.0.1:40820[0](queued=0,recved=1,sent=0) /10.128.0.8:53960[1](queued=0,recved=150844,sent=150844) Latency min/avg/max: 0/0/88 Received: 4206995 Sent: 4207018 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo cons | nc localhost 2181
Lệnh này cung cấp thông tin chi tiết mở rộng về các kết nối ZooKeeper.
Ví dụ về đầu ra:
$ echo cons | nc localhost 2181 /127.0.0.1:40864[0](queued=0,recved=1,sent=0) /10.128.0.8:54152[1](queued=0,recved=753400,sent=753406,sid=0x15d521a96d40007, lop=PING,est=1500321588647,to=40000,lcxid=0x972e9,lzxid=0x745,lresp=1502334173174, llat=0,minlat=0,avglat=0,maxlat=26) /10.128.0.8:53944[1](queued=0,recved=980297,sent=980306,sid=0x15d521a96d40005, lop=PING,est=1500321544896,to=40000,lcxid=0xce92a,lzxid=0x745,lresp=1502334176055, llat=0,minlat=0,avglat=0,maxlat=23) /10.128.0.8:54388[1](queued=0,recved=457110,sent=457110,sid=0x15d521a96d4000a, lop=PING,est=1500321673852,to=40000,lcxid=0x4dbe3,lzxid=0x745,lresp=1502334174245, llat=0,minlat=0,avglat=0,maxlat=22) /10.128.0.8:54622[1](queued=0,recved=972967,sent=972967,sid=0x15d521a96d4000b, lop=PING,est=1500321890175,to=40000,lcxid=0xccc9d,lzxid=0x745,lresp=1502334182417, llat=0,minlat=0,avglat=0,maxlat=88) /10.128.0.8:54192[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40008, lop=PING,est=1500321591985,to=40000,lcxid=0x8,lzxid=0x745,lresp=1502334184475, llat=3,minlat=0,avglat=0,maxlat=19) /10.128.0.8:44564[1](queued=0,recved=267354,sent=267355,sid=0x15d521a96d4000d, lop=PING,est=1501606633426,to=40000,lcxid=0x356e2,lzxid=0x745,lresp=1502334182315, llat=0,minlat=0,avglat=0,maxlat=35) /10.128.0.8:53960[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40006, lop=PING,est=1500321547138,to=40000,lcxid=0x5,lzxid=0x745,lresp=1502334177036, llat=1,minlat=0,avglat=0,maxlat=20)
Nếu bất kỳ lệnh kiểm tra sức khoẻ nào trong 3 lệnh gần đây nhất cho thấy thông báo sau:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Sau đó, nó cho biết(các) nút ZooKeeper cụ thể không xử lý các yêu cầu.
-
- Kiểm tra nhật ký ZooKeeper trên nút cụ thể và cố gắng xác định mọi lỗi khiến ZooKeeper ngừng hoạt động. Nhật ký ZooKeeper có trong thư mục sau:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
Độ phân giải
- Khởi động lại lần lượt tất cả các nút ZooKeeper khác trong cụm.
- Chạy lại các lệnh kiểm tra tình trạng của ZooKeeper trên từng nút và xem bạn có nhận được đầu ra dự kiến hay không.
Hãy liên hệ với Nhóm hỗ trợ Apigee để khắc phục nguyên nhân gây ra tình trạng tải hệ thống nếu vấn đề vẫn tiếp diễn hoặc nếu việc khởi động lại không giải quyết được vấn đề.