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
Không thể bắt đầu quy trình ZooKeeper.
Thông báo lỗi
Khi bạn cố gắng bắt đầu quy trình ZooKeeper, thông báo lỗi sau sẽ được trả về cho biết ZooKeeper không thể bắt đầu:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
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 |
|---|---|
| Định cấu hình sai myid của ZooKeeper | Người dùng Edge Private Cloud |
| Đang sử dụng cổng ZooKeeper | Người dùng Edge Private Cloud |
| Mã nhận dạng quy trình không chính xác trong tệp apigee-zookeeper.pid | Người dùng Edge Private Cloud |
| Lỗi bầu chọn người lãnh đạo ZooKeeper | 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 đó.
myid ZooKeeper bị định cấu hình sai
Các phần sau đây cung cấp thông tin tổng quan về tệp myid và mô tả cách chẩn đoán cũng như giải quyết các vấn đề về cấu hình sai.
Tổng quan về tệp myid
Trên mỗi nút ZooKeeper, có 2 tệp:
- Tệp
/opt/apigee/apigee-zookeeper/conf/zoo.cfgchứa danh sách các IP cho tất cả các nút ZooKeeper trong cụm.Ví dụ: nếu
/opt/apigee/apigee-zookeeper/conf/zoo.cfgchứa IP của 3 nút ZooKeeper thuộc cụm như sau:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- Tệp
/opt/apigee/data/apigee-zookeeper/data/myidchứa một dòng văn bản duy nhất tương ứng với số máy chủ của nút ZooKeeper cụ thể đó. myid của máy chủ 1 sẽ chứa văn bản "1" và không có nội dung nào khác. Giá trị nhận dạng phải là duy nhất trong nhóm và phải có giá trị từ 1 đến 255.Ví dụ: trên máy chủ ZooKeeper.1, tệp
/opt/apigee/data/apigee-zookeeper/data/myidchỉ chứa văn bản 1 như minh hoạ bên dưới:$ cat myid 1
Chẩn đoán
- Kiểm tra nhật ký ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logđể tìm lỗi. - Nếu bạn thấy thông báo CẢNH BÁO tương tự như "Connection broken for id #, my id = #" (Kết nối bị gián đoạn cho mã nhận dạng #, mã nhận dạng của tôi = #), như trong hình bên dưới, thì nguyên nhân có thể gây ra vấn đề này là do máy chủ # trong tệp myid bị định cấu hình sai hoặc bị hỏng.
[myid:2] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@762] - Connection broken for id 2, my id = 2, error = java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:375) at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker. run(QuorumCnxManager.java:747)
- Kiểm tra tệp
/opt/apigee/apigee-zookeeper/conf/zoo.cfgvà ghi lại server.# cho nút ZooKeeper hiện tại. - Kiểm tra tệp
/opt/apigee/data/apigee-zookeeper/data/myidvà xem văn bản trong tệp này có khớp với server.# được ghi chú trong bước #2 hay không. - Nếu có sự không khớp, thì bạn đã xác định được nguyên nhân khiến ZooKeeper không khởi động được.
Độ phân giải
Nếu tệp myid được định cấu hình không chính xác, hãy chỉnh sửa tệp myid và thay thế giá trị bằng văn bản chính xác đại diện cho tham số server.# trong zoo.cfg.
Cổng ZooKeeper đang được sử dụng
Chẩn đoán
- Kiểm tra nhật ký ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logđể biết các lỗi. - Nếu bạn nhận thấy ngoại lệ
java.net.BindException: Address already in usetrong khi liên kết với cổng 2181, như minh hoạ trong hình bên dưới, thì điều này cho thấy cổng 2181 của ZooKeeper đang được một quy trình khác sử dụng. Do đó, ZooKeeper không khởi động được.2017-04-26 07:00:10,420 [myid:3] - INFO [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2181 2017-04-26 07:00:10,421 [myid:3] - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67) at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:95) at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:111) at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
- Sử dụng lệnh netstat bên dưới để xác nhận rằng cổng ZooKeeper 2181 thực sự đang được một quy trình khác sử dụng:
netstat -an | grep 2181
Độ phân giải
Nếu cổng 2181 của ZooKeeper vẫn đang được sử dụng, hãy làm theo các bước bên dưới để giải quyết vấn đề này:
- Sử dụng lệnh
netstatđể tìm quy trình đang giữ cổng 2181. Dừng quy trình đang sử dụng cổng ZooKeeper 2181:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- Dọn dẹp các tệp pid và khoá nếu có:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- Khởi động lại ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Mã quy trình không chính xác trong tệp apigee-zookeeper.pid
Khi bạn cố gắng dừng/khởi động lại ZooKeeper, thao tác này có thể không thành công vì tệp apigee-zookeeper.pid chứa pid cũ/không chính xác chứ không phải pid của quy trình ZooKeeper đang chạy. Điều này có thể xảy ra nếu quy trình ZooKeeper bị chấm dứt đột ngột hoặc bất ngờ vì một lý do nào đó và tệp apigee-zookeeper.pid không bị xoá.
Chẩn đoán
- Lấy mã nhận dạng quy trình của quy trình ZooKeeper hiện đang chạy bằng cách chạy lệnh
ps:ps -ef | grep zookeeper
- Kiểm tra xem tệp
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pidcó tồn tại hay không. Nếu có, hãy ghi lại mã nhận dạng quy trình được ghi vào tệp này. - So sánh mã nhận dạng quy trình lấy từ bước 1 và 2. Nếu những thông tin này khác nhau, thì nguyên nhân gây ra vấn đề này là do bạn có mã quy trình không chính xác trong
apigee-zookeeper.pid file.
Độ phân giải
- Chỉnh sửa tệp apigee-zookeeper.pid và thay thế mã nhận dạng quy trình không chính xác bằng mã nhận dạng quy trình chính xác lấy được từ lệnh ps (bước 1 ở trên).
- Khởi động lại ZooKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
Lỗi bầu chọn người lãnh đạo ZooKeeper
Chẩn đoán
Cách chẩn đoán:
- Kiểm tra nhật ký ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logđể tìm lỗi. - Kiểm tra xem có thay đổi nào về cấu hình có thể khiến ZooKeeper không bầu được người lãnh đạo hay không.
- Kiểm tra
/opt/apigee/apigee-zookeeper/conf/zoo.cfgvà đảm bảo rằng tất cả ZooKeeper trong cụm đều có số lượng và địa chỉ IP phù hợp cho tham số server.#. Ngoài ra, xin lưu ý rằng để quá trình bầu chọn người đứng đầu thành công, cần có tối thiểu 3 người bỏ phiếu và số người bỏ phiếu phải là số lẻ. Nếu có quá ít cử tri, chẳng hạn như chỉ có 2 cử tri, thì không thể đạt được số cử tri tối thiểu để quyết định người lãnh đạo trong số 2 cử tri.
Độ phân giải
Thông thường, lỗi bầu chọn ZooKeeper là do myid được định cấu hình sai. Sử dụng giải pháp trong myid ZooKeeper bị định cấu hình sai để giải quyết lỗi bầu cử.
Nếu vấn đề vẫn tiếp diễn và bạn cần chẩn đoán thêm, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.