Vài ghi chú khi setup AWS MSK
3 min read

Vài ghi chú khi setup AWS MSK

Vài ghi chú khi setup AWS MSK

Gần đây mình cần setup AWS MSK (giải pháp managed Kafka được offer bởi AWS). Mình ghi lại vài ghi chú nho nhỏ ở đây để khi cần sẽ lục lại.

Setup cơ bản

Khi setup MSK, ta chỉ cần cung cấp cho MSK subnet của VPC mà ta dự định từ đó sẽ kết nối vào. Tương ứng với mỗi subnet, thường sẽ cần ít nhất một broker instance (Kafka broker). Kafka broker về bản chất là một EC2 instance được cài đặt Kafka để join vào cluster.

Theo best practices, mỗi AZ ta nên có một subnet để setup cho MSK cluster để đảm bảo availability.

Setup cơ bản của mình đơn giản như thế này:

  • Setup một VPC có 3 public subnet, 3 private subnet
  • Setup MSK với 3 private subnets từ VPC. Vì các micro-service của mình hoàn toàn run ở private subnet và vì lý do security ta sẽ không có nhu cầu cho phép MSK được quyền access từ public subnet. MSK nên sử dụng security group của VPC và cho phép trong nội bộ security group được access vào tất cả các port (self-reference security group).
  • Một EC2 đóng vai trò làm landing server để từ đó có thể troubleshoot MSK khi cần. EC2 server sẽ được gắn một security group là "landing-server".  Sau đó, ở MSK setup, ta cho phép security group này được access vào các port cần thiết của MSK.

Để hiểu một cách trọn vẹn về mô hình network của MSK và VPC có thể tham khảo diagram sau đây:

Về bản chất, MSK cluster sau khi được setup sẽ nằm ở một VPC riêng biệt do AWS quản lý. Các connection từ subnet của VPC (mà ta đã cung cấp từ lúc đầu cho MSK setup) được thiết lập thông qua ENIs (hệ thống network internal của AWS) và các connection này là private connection.

Điều này đồng nghĩa với việc: nếu bạn setup một VPC khác (không phải là VPC ban đầu), bạn sẽ không thể connect được vào MSK từ đó. Muốn kết nối vào được, thì VPC mới sẽ cần được "join" vào cùng một network. Để làm được điều này, bạn có thể tham khảo các connectivity pattern được AWS khuyến nghị

Secure connectivity patterns to access Amazon MSK across AWS Regions | Amazon Web Services
AWS customers often segment their workloads across accounts and Amazon Virtual Private Cloud (Amazon VPC) to streamline access management while being able to expand their footprint. As a result, in some scenarios you, as an AWS customer, need to make an Amazon Managed Streaming for Apache Kafka (Ama…

Kiểm tra setup

Sau khi setup MSK, landing server như trên, chúng ta cần kiểm tra connectivity để đảm bảo không có issue liên quan đến connection từ các subnet.

Check point 1: từ landing server kiểm tra có thể kết nối được đến ZooKeeper không

Check point 2: từ landing server, kiểm tra kết nối đến các broker instance.

Check point 3: test connection từ application đến các broker