cấu hình kafka và mô tả zookeeper (kafka, zookeeper, akhq, quorum controller)

Xin chào, đây là codeshow .
Lần này, chúng ta sẽ tập kafka .

Để thực hành, vui lòng clone repository devcontainers của codeshow github .
Chạy vscode từ thư mục kafka .
Chạy devcontainers .
Chờ cho đến khi container chạy.
Khi container chạy xong, chúng ta sẽ mở docker desktop.
3 kafka và thủ môn sở thú AKHQ đang chạy.

Mô tả các container này:
Người giữ vườn thú là coordinator system distribution .
Quản lý nhiều máy chủ kafka trong môi trường phân tán.

AKHQ cung cấp UI web để quản lý kafka một cách thuận tiện.
Nó sử dụng port 8080.

zookeeper định kỳ gửi tín hiệu nhịp tim đến tất cả các nút kafka . zookeeper đưa ra yêu cầu ping , Kafka đưa ra phản hồi bằng pong . Nếu một số nút kafka không phản hồi, zookeeper sẽ coi nút kafka đó là không thành công.

Nếu kafka số 3 thất bại,
ping và pong thất bại,
zookeeper xóa kafka số 3 khỏi nút quản lý.
Sau đó, kafka 1 và 2 còn lại được thông báo về lỗi nút 3 và kafka 1 và 2 không còn giao tiếp với 3.
Để tham khảo, khi kafka3 được tạo lại, nó được đăng ký trong zookeeper như trong hình và kafka 1, 2 và 3 lại trở thành cluster.

Để tham khảo, trên thực tế, chỉ có một zookeeper,
Như thể hiện trong hình, trong môi trường production , nhiều nút zookeeper được cài đặt.
Định cấu hình dịch vụ để hoạt động ngay cả khi một zookeeper gặp sự cố.
Trong lớp, chúng tôi sẽ chỉ sử dụng 1 zookeeper vì chúng tôi không cần tính sẵn sàng cao như môi trường sản xuất.

Hãy chuyển đến menu Nodes do AKHQ cung cấp bằng browser .
Tổng cộng có 3 nút kafka đang chạy trên màn hình.

Dừng kafka2 trong desktop docker .
Nếu bạn quay lại menu nút của AKHQ và làm mới,
Bạn có thể thấy rằng kafka2 đã biến mất.
Một lần nữa, nhấn nút start trong docker desktop .
Đợi kafka tải và làm mới màn hình Nodes trong AKHQ .
kafka2 sẽ được tra cứu lại trên màn hình.
Trong số các nút kafka này, chúng tôi sẽ dừng nút control .
Nếu nút control trước đó không vượt qua được check health , bạn có thể thấy rằng một nút khác sẽ trở thành nút control .

Trong kafka, zookeeper chịu trách nhiệm điều phối giữa các nút trong môi trường phân tán.
Vì cài đặt server admin của zookeeper được đặt thành true trong cài đặt devcontainer,
Chúng tôi có thể kiểm tra thông tin zookeeper thông qua port 8081 thông qua trình duyệt.

Tôi sẽ gõ commands slash 8081 localhost trong trình duyệt làm địa chỉ.

Trên trang commands , bạn có thể thấy các lệnh do zookeeper cung cấp dưới dạng liên kết.
Chọn connections .

http://localhost:8081/commands/connections

Thông qua dữ liệu json được truy xuất bởi connections , bạn có thể kiểm tra thông tin của nút kafka được kết nối với zookeeper .

Hãy kiểm tra xem IP này có phải là nút kafka bằng cách nhập docker container.

hostname -I

Bạn có thể thấy rằng thông tin kết nối zookeeper khớp với IP của nút kafka .
Bạn có thể kiểm tra thông tin kết nối của ba nút kafka trong mảng connections .
Bây giờ, bạn có thể thấy rằng có tổng cộng 3 nút kafka đang kiểm tra ping định kỳ.
Như đã giải thích trong hình trước,
Khi ping hoặc pong bị lỗi, zookeeper sẽ truyền thông tin về nút bị lỗi đến các nút kafka khác.
Hai nút kafka còn lại không còn giao tiếp với nút bị lỗi.
Và khi nút kafka hoạt động trở lại trong zookeeper và ping and pong thành công,
Thông tin này lại được truyền đến hai nút còn lại và các nút kafka này giao tiếp với nút mới.

Ngoài ra, mỗi nút kafka về cơ bản cần một bộ điều khiển.
Nút điều khiển này là một nút rất quan trọng quản lý và điều khiển các nút kafka khác.
Khi sử dụng zookeeper, chỉ một nút kafka có thể là nút điều khiển.
Nếu một nút điều khiển này bị lỗi, tất cả cluster kafka không thể hoạt động.
Vì vậy, nếu nút điều khiển bị lỗi, một trong các nút kafka khác sẽ được bầu làm nút điều khiển.
Tại thời điểm này, các nút được bầu thông qua biểu quyết và zookeeper tham gia vào quá trình này.
Do đó, zookeeper đóng một vai trò quan trọng trong hệ thống phân tán kafka .
Để tham khảo, các nút còn lại ngoại trừ nút điều khiển được gọi là nút broker . Nút lưu trữ partition mà bạn sẽ tìm hiểu trong bài học tiếp theo phụ trách nút broker . Nút điều khiển quản lý các nút broker và lưu trữ các siêu dữ liệu khác nhau để broker sử dụng.

Để tham khảo, kafka cung cấp thêm quorum bắt đầu từ phiên bản 2.8.0.
Nó quản lý siêu dữ liệu kafka trực tiếp trên nút kafka mà không cần sử dụng zookeeper thông qua protocol KRaft mà không cần phối hợp kafka với zookeeper .
So với zookeeper hiện có, chỉ có một nút điều khiển,
quorum có thể có nhiều nút điều khiển.
Nghĩa là, nếu một nút điều khiển bị lỗi, một nút điều khiển khác có thể được sử dụng ngay lập tức.
Nút điều khiển luôn đồng bộ hóa siêu dữ liệu.
Chi phí sao chép dữ liệu meta hiện có từ zookeeper đã giảm, do đó, các nút của bộ điều khiển có thể được bắt đầu rất nhanh.
Ngay bây giờ bạn có hai lựa chọn: zookeeper và quorum .
Trong tương lai, kafka có thể không dùng nữa zookeeper.
Tuy nhiên, vì nó hiện đang trong quá trình chuyển đổi, tôi nghĩ tốt nhất là nên học zookeeper và người kiểm soát quorum theo thứ tự.

Chúng ta sẽ thực hành truy vấn zookeeper đơn giản bằng lệnh shell .
Thực thi shell của container nơi kafka được cài đặt.

Truy vấn tất cả kafka qua zookeeper .

zookeeper-shell zookeeper:2181 ls /brokers/ids

Tôi xác nhận rằng có tổng cộng ba cụm 0, 1, 2 trong cluster.

Hãy xem thông tin kafka thứ 0 bằng lệnh get .

zookeeper-shell zookeeper:2181 get /brokers/ids/0
zookeeper-shell zookeeper:2181 get /brokers/ids/1
zookeeper-shell zookeeper:2181 get /brokers/ids/2

Bạn có thể kiểm tra thông tin broker kafka được lưu trữ trong zookeeper .
Qua phần trên, chúng ta đã biết cách lưu trữ và điều phối các thông tin khác nhau của kafka trong môi trường phân tán với zookeeper .

Ở trên, chúng tôi đã xem xét cài đặt môi trường kafka và hoạt động nội bộ.
Lần tới, chúng ta sẽ tìm hiểu về topic và partition.

Cài đặt thông báo đăng ký và thích rất hữu ích cho người tạo nội dung.

Cảm ơn