- vừa được xem lúc

Thực hành setup cụm kafka trên AWS EC2 phần 2:

0 0 10

Người đăng: Thịnh Lang

Theo Viblo Asia

Tác giả: https://www.facebook.com/lang.thinh.146/

Source: https://github.com/quocthinh861/kafka-zookeeper-cluster.git

Ở bài viết trước, chúng ta đã setup xong cụm zookeeper bao gồm 3 servers chạy trên 3 AZ khác nhau, bài viết này sẽ tiếp tục tạo thêm 3 con trên 3 AZ còn lại để tạo cụm boostrap server nhé

Kiến trúc Kafka

Nói sơ qua một tí, Kafka sử dụng Zookeeper để gửi các message đến các server (hay còn được gọi là broker) thông qua topic. Các topic này sẽ có số bản sao (replication factor) và sẽ được phân tán trên khắp broker. Trong phạm vi bài lab này, mô hình của chúng ta sẽ như sau:

Có thể thấy rằng chúng ta có 3 broker, với cách setup như thế này nếu trong tính huống 1 con broker bị shutdow thì dữ liệu của chúng ta tại thời điểm đó vẫn được bảo toàn, nhờ vào cơ chế sao lưu của kafka (N-1 brokers can be down, if N is your default topic replication factor). Dữ liệu được phân tán đều trên cụm, có nghĩa ít bộ nhớ được sử dụng hơn trên từng broker nhưng vẫn có thể bảo toàn tính khả dụng của dữ liệu

Cấu hình Kafka

Để cấu hình cho Kafka thì có rất nhiều setting cho nó, việc setup sao cho phù hợp phụ thuộc vào hạ tầng của bạn. Bài viết này chủ yếu sử dụng các setting mặc định cung cấp bởi Kafka. Bạn có thể đọc file cấu hình Kafka tại đây. Chú ý chúng ta chỉ ra đường dẫn sao lưu dữ liệu và chỉ ra cụm zookeeper đã cài đặt ở bài viết trước

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
...
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181/kafka

Setup Kafka

Trước tiên mình sẽ setup chỉ với 1 server chạy kafka. Đầu tiên các bạn tạo ra 1 instance với AIM đã được tạo sẵn ở bài trước, đặt tên là My Kafka 1, với bài viết trước mình đã tạo 3 server Zookeeper trên 3 subnet khác nhau, với instance này các bạn chọn 1 trong các subnet còn lại, trong ví dụ của mình, mình thiết lập private ip cho nó là 192.168.1.119 (chú ý địa chỉ ip này chính là địa chỉ ip mà các bạn đã set trong bài viết trước /etc/hosts lúc đầu nha)

SSH vào instance, tại đây các bạn đã có sẵn thư mục /kafka với tất cả setup đã được thiết lập sẵn. Để chạy Kafka trước tiên nhìn vào file setting cho nó ở đây . Có rất nhiều thông số cấu hình, mình muốn tập trung vào một số thông số quan trọng sau đây:

Với mỗi Kafka server cần có 1 id riêng biệt broker.id=1

log.dirs=/data/kafka chỉ định nên lưu dữ liệu log

min.insync.replicas=2vì chúng ta chỉ có 1 kafka server nên các bạn sửa lại thành 1 nhé (sửa lại bằng 2 khi ở phía dưới bài viết)

zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181/kafka đây là chuỗi kết nối cụm Zookeeper đã tạo, chú ý chúng ta thêm /kafka ở phía cuối để Zookeeper lưu tất cả dữ liệu cụm kafka ở một thư mục riêng có tên là kafka cho dễ quản lý nha

Bước tiếp theo gắn file setting này thay thế file setting mặc định

# edit kafka configuration
rm config/server.properties
nano config/server.properties

Chạy thử xem sao bin/kafka-server-start.sh config/server.properties.

Đến đây cũng như bài viết trước, mình sẽ biến nó thành service để chạy ngầm, file script có nội dung ở đây

# Install Kafka boot scripts
sudo nano /etc/init.d/kafka
sudo chmod +x /etc/init.d/kafka
sudo chown root:root /etc/init.d/kafka
# you can safely ignore the warning
sudo update-rc.d kafka defaults

Sau đó chúng ta có thể tắt và khởi động như 1 service

# start kafka
sudo service kafka start

Để xác định service đang chạy, các bạn dùng câu lệnh nc -vz localhost 9092

Chúng ta đã setup xong cụm 1 node Kafka rồi, để chạy thử vài câu lệnh xem cụm hoạt động tốt không nhé

Chúng ta tạo ra 1 topic trên server Kafka

# create a topic
bin/kafka-topics.sh --zookeeper zookeeper1:2181/kafka --create --topic first_topic --replication-factor 1 --partitions 3

Vào một trong các con Zookeeper chạy câu lệnh bin/kafka-topics.sh --list --zookeeper localhost:2181, kết quả cho thấy topic được tạo ở trên đã được Zookeeper lưu lại 😘

Vậy là đã hoàn thành xong việc setup cụm Kafka gồm 1 node rồi. Tiếp theo chỉ cần tạo AIM từ instance này và tạo thêm 2 instance trên 2 subnet còn lại giống bài viết trước thế là xong (chú ý file config các bạn sửa lại broker.id cho 2 instance lần lượt 2, 3) 😚Ở bài viết tiếp theo, mình sẽ thực hiện các thao tác gửi nhận dữ liệu trên cụm này nhé !!!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số thủ thuật hay ho với Linux (1).

1. Ctrl + x + e. Giữ CTRL, nhấn phím x rồi nhấn phím e. Thao tác này sẽ mở ra editor mặc định (echo $EDITOR | $VISUAL để kiểm tra) chứa sẵn.

0 0 35

- vừa được xem lúc

How to deploy Amplication app to DigitalOcean

This article shows you the way to deploy an app generated by Amplication to DigitalOcean. Amplication provides the dockerfile to use containers for deployment, but this blog explains how to do it manu

0 0 39

- vừa được xem lúc

Có gì mới trong Laravel 9.0?

Laravel v9 là phiên bản LTS tiếp theo của Laravel và ra mắt vào tháng 2 năm 2022. Trong bài viết này, mình xin giới thiệu một vài tính năng mới trong Laravel trong Laravel 9.

0 0 65

- vừa được xem lúc

Xây dựng trang web tra cứu ảnh sử dụng phân cụm Spectral Clustering

1. Tổng quan tra cứu ảnh. 1.1.

0 0 32

- vừa được xem lúc

Scanning network 1 - quét mạng như một hacker

Chào mọi người mình là Tuntun. Một năm qua là một năm khá bận rộn nhỉ.

0 0 34

- vừa được xem lúc

Interpreter Design Pattern - Trợ thủ đắc lực của Developers

1. Giới thiệu. . Interpreter là một mẫu thiết kế thuộc nhóm hành vi (Behavioral Pattern).

0 0 32