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
Các vấn đề về khả năng kết nối của ZooKeeper có thể biểu hiện dưới nhiều triệu chứng khác nhau, chẳng hạn như:
- Lỗi triển khai proxy API
- Các lệnh gọi API quản lý không thành công và có lỗi 5XX
- Bộ định tuyến hoặc Bộ xử lý thư 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ể quan sát được khi mất kết nối với(các) nút ZooKeeper.
- Lỗi sau đây được trả về trong nhật ký Máy chủ quản lý khi không triển khai được Proxy API 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 khi khởi động, Bộ định tuyến và Bộ xử lý thư sẽ kết nối với ZooKeeper. Nếu có vấn đề về kết nối với ZooKeeper, thì các thành phần này sẽ không khởi động được với 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 của Edge có thể hiển thị lỗi sau đây cho biết không thể kiểm tra trạng thái triển khai của các Proxy API:
Error Fetching Deployments Error while checking path existence for path: path
Các nguyên nhân có thể
Bảng sau liệt kê các 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 giữa các trung tâm dữ liệu | Người dùng Edge Private Cloud |
Nút ZooKeeper không phân phát yêu cầu | Người dùng Edge Private Cloud |
Hãy nhấp vào một đường liên kết trong bảng để xem các giải pháp có thể áp dụng cho nguyên nhân đó.
Vấn đề về kết nối mạng giữa các 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 của Apigee Edge 2 DC điển hình sẽ có:
- Máy chủ ZooKeeper 1, 2 và 3 làm cử tri trong DC-1
- ZooKeeper 4 và 5 làm cử tri và ZooKeeper 6 làm người quan sát trong DC-2.
Nếu vùng DC-1 bị gián đoạn hoặc kết nối mạng giữa DC-1 và DC-2 bị hỏng, thì các nút ZooKeeper không thể chọn một biến thể dẫn đầu mới trong DC-2 và các nút này sẽ không liên lạc được với nút dẫn đầu. Những người quan sát của ZooKeeper không thể bầu ra nhà lãnh đạo mới và hai cử tri còn lại trong DC-2 không có đủ số phiếu bầu gồm ít nhất 3 nút cử tri để bầu ra người lãnh đạo mới. Do đó, ZooKeepers 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 thử lại để kết nối lại với những người bỏ phiếu ZooKeeper nhằm tìm thấy người dẫn đầu.
Độ phân giải
Áp dụng các giải pháp sau đây để giải quyết vấn đề này theo thứ tự quy định.
Nếu bạn không thể giải quyết vấn đề sau khi thử các giải pháp trên, vui lòng liên hệ với Nhóm hỗ trợ API.
Giải pháp 1
- Hãy làm việc với quản trị viên mạng của bạn để khắc phục sự cố 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 qua các trung tâm dữ liệu và chọn một trưởng nhóm ZooKeeper, các nút này phải hoạt động ổn định và có thể xử lý yêu cầu.
Giải pháp 2
- Nếu kết nối mạng sẽ mất thời gian để sửa chữa, giải pháp là định cấu hình lại các nút ZooKeeper trong khu vực mà chúng bị 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à cử tri và xoá
server.#
trongzoo.cfg
của ZooKeeper từ 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-ea
biểu thị khu vực Đông Hoa Kỳ và DC-2 sử dụng tên máy chủus-wo
biể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 hiển thị):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.cfg
như 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,
tạo một tệp
/opt/apigee/customer/application/zookeeper.properties
có 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\
Ở trên, các nút từ Đông Hoa Kỳ sẽ bị xoá và các nút Tây Hoa Kỳ được quảng bá cho cử tri khi chú thích
:observer
bị xoá. - Trong ví dụ sau,
- Sao lưu
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
và/opt/apigee/customer/application/zookeeper.properties
cũ.Các tệp này sẽ được dùng để khôi phục chế độ mặc định khi kết nối mạng được sao lưu giữa các trung tâm dữ liệu.
Tắt ký hiệu đối tượng tiếp nhận dữ liệu cho nút đối tượng tiếp nhận dữ liệu. Để 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/myid
như sau:- Đối với
server.1
, thay đổi mục nhập bên trongmyid
từ 4 thành 1. - Đối với
server.2
, thay đổimyid
từ 5 thành 2. - Đối với
server.3
, thay đổimyid
từ 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 đã hoạt động với một nút dẫn đầu:
$ 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
Kết quả của lệnh này sẽ chứa một dòng có nội dung "mode" theo sau là "leader" nếu đó là người dẫn đầu hoặc "người theo dõi" nếu đó là người theo dõi.
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 khôi phục 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.
- Kiểm tra nhật ký của ZooKeeper để xác định lý do nút ZooKeeper bị lỗi.
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ợ API và cung cấp nhật ký của ZooKeeper để khắc phục nguyên nhân của bất kỳ nút ZooKeeper nào có thể đã bị dừng.
Nút ZooKeeper không phân phối yêu cầu
Một nút ZooKeeper trong tập hợp có thể không hoạt động tốt và không thể phản hồi các yêu cầu của ứng dụng. Điều này có thể là do:
- Nút đã dừng mà không được khởi động lại.
- Nút này đã khởi động lại khi chưa bật tính năng tự động bắt đầu.
- Do quá trình tải trên nút, hệ thống ngừng hoạt động hoặc chuyển sang 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 sau đây của ZooKeeper trên mỗi nút ZooKeeper và kiểm tra kết quả:
-
$ echo "ruok" | nc localhost 2181
Kết quả điểm dữ liệu:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
Kiểm tra chế độ để xác định xem nút ZooKeeper là người dẫn đầu hay người theo dõi.
Kết quả mẫu cho một nút ZooKeeper 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.
Kết quả điểm dữ liệu:
$ 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 ứng dụng được kết nối.
Kết quả điểm dữ liệu:
$ 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 chi tiết mở rộng về các kết nối ZooKeeper.
Kết quả điểm dữ liệu:
$ 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 nào trong 3 lệnh kiểm tra tình trạng gần nhất hiển thị thông báo sau:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
Khi đó, thông báo cho biết(các) nút cụ thể của ZooKeeper không phân phối yêu cầu.
-
- Kiểm tra nhật ký của ZooKeeper trên nút cụ thể và cố gắng tìm 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 tất cả các nút ZooKeeper khác trong cụm từng nút.
- Chạy lại các lệnh kiểm tra tình trạng của ZooKeeper trên mỗi nút và xem liệu bạn có nhận được kết quả dự kiến hay không.
Hãy liên hệ với Apigee Support để khắc phục nguyên nhân tải hệ thống nếu tình trạng này vẫn tiếp diễn hoặc nếu việc khởi động lại không giải quyết được sự cố.