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 thể bắt đầu quy trình ZooKeeper.
Thông báo lỗi
Khi bạn cố khởi động quy trình ZooKeeper, thông báo lỗi sau sẽ được trả về cho biết rằng không thể khởi động ZooKeeper:
+ 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ê các nguyên nhân có thể gây ra sự cố này:
Nguyên nhân | Cho |
---|---|
Sai cấu hình của myid trong ZooKeeper | Người dùng Edge Private Cloud |
Cổng ZooKeeper đang được sử dụng | Người dùng Edge Private Cloud |
Mã quy trình không chính xác trong tệp apigee-zookeeper.pid | Người dùng Edge Private Cloud |
Thất bại trong bầu cử nhà lãnh đạo củaZooKeeper | Người dùng Edge Private Cloud |
Nhấp vào một liên kết trong bảng để xem các giải pháp khả thi cho nguyên nhân đó.
Myid trong 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, đồng thời mô tả cách chẩn đoán và 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ó hai tệp:
- Tệp
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
chứa danh sách IP cho tất cả các nút ZooKeeper trong cụm.Ví dụ: nếu
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
chứa phương thức IP của 3 nút ZooKeeper một phần của 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/myid
chứa một dòng đơn của văn bản tương ứng với số máy chủ của nút ZooKeeper cụ thể đó. Thần myid của máy chủ 1 sẽ chứa văn bản "1" và không gì khác. Mã nhận dạng phải là duy nhất trong bộ đồng phục và phải có giá trị nằm trong khoảng từ 1 đến 255.Ví dụ: trên máy chủ ZooKeeper.1, Tệp
/opt/apigee/data/apigee-zookeeper/data/myid
chỉ nên chứa văn bản 1 như minh hoạ dưới đây:$ cat myid 1
Chẩn đoán
- Kiểm tra nhật ký ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
để tìm . - Nếu bạn thấy thông báo WARN tương tự như "Kết nối bị hỏng đối với mã nhận dạng #, mã nhận dạng của tôi = #",
như minh hoạ trong hình bên dưới, thì nguyên nhân có thể gây ra sự cố 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.cfg
và ghi lại server.# cho nút ZooKeeper hiện tại. - Kiểm tra tệp
/opt/apigee/data/apigee-zookeeper/data/myid
và xem liệu văn bản trong tệp này khớp với máy chủ.# được ghi chú ở bước #2. - Nếu thông tin không khớp, tức là bạn đã xác định được nguyên nhân khiến ZooKeeper không thể đầu.
Độ 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ị thành 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
để tìm . - Nếu bạn nhận thấy ngoại lệ
java.net.BindException: Address already in use
trong khi liên kết với cổng #2181, như minh hoạ trong hình bên dưới, điều đó cho biết ZooKeeper cổng 2181 đang được một quy trình khác sử dụng. Do đó, bạn không thể khởi động ZooKeeper.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 dưới đây để xác nhận rằng cổng ZooKeeper 2181 đang thực sự được sử dụng
của một quy trình khác:
netstat -an | grep 2181
Độ phân giải
Nếu cổng ZooKeeper 2181 vẫn đang được sử dụng, hãy làm theo các bước dưới đây để giải quyết vấn đề này vấn đề:
- Sử dụng lệnh
netstat
để tìm quy trình đang lưu giữ cổng 2181. Tắt 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 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ố dừng/khởi động lại ZooKeeper, việc này có thể không thành công do
Tệp apigee-zookeeper.pid
chứa pid cũ hơn/không chính xác và không phải là pid hiện tại
chạy quy trình ZooKeeper. Đ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
đột ngột vì 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.pid
có phải không đã tồn tại. Nếu có, hãy ghi lại mã định danh tiến trình được ghi vào tệp này. - So sánh các mã quy trình được lấy ở bước 1 và bước 2. Nếu chúng khác nhau, thì nguyên nhân
của vấn đề này là 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ã chính xác tiến trình id nhận đượ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
Thất bại trong bầu cử người lãnh đạo trong 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 . - Kiểm tra xem có thay đổi nào về cấu hình có thể dẫn đến việc bầu cử ZooKeeper đối với nhà lãnh đạo thất bại.
- Hãy kiểm tra
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
và đảm bảo tất cả ZooKeepers trong cụm có số điện thoại và địa chỉ IP phù hợp cho máy chủ.# tham số. Ngoài ra, xin lưu ý rằng để cuộc bầu cử lãnh đạo thành công, cuộc bầu cử phải có tối thiểu 3 cử tri và số cử tri phải được đánh số lẻ. Nếu có quá ít cử tri, chẳng hạn như chỉ có 2 cử tri, không thể có đại diện để quyết định người lãnh đạo chỉ với 2 cử tri.
Độ phân giải
Thông thường, lỗi bầu cử ZooKeeper là do một myid bị định cấu hình sai. Sử dụng độ phân giải trong Định cấu hình sai ZooKeeper myid để giải quyết vấn đề bầu cử không thành công.
Nếu sự cố vẫn tiếp diễn và cần chẩn đoán thêm, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge.