【AWS】Amazon MSK ~ 入門編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/04/23/235534
https://dk521123.hatenablog.com/entry/2023/04/24/153846

で、ローカル上にて、Apache Kafka の構築を行ったが、
今回は、Amazon MSK (Managed Streaming for apache Kafka)って、
AWSのマネージドサービスを取り上げる

目次

【0】AWS 上でのApache Kafkaの構築
 1)Amazon MSK
 2)Amazon ECS
 3)Amazon EKS
【1】Amazon MSK
 1)動画解説
 2)公式からのドキュメント
 3)料金
 4)Kafka サポートVersion
【2】Amazon MSKのサービス構成
 1)MSK Cluster
 2)MSK Clusters configuration
 3)MSK Cluster / Managed VPC connections
 4)MSK Connect
 5)MSK Connect / Custom plugin
 6)MSK Connect / Worker configuration
【3】使用上の注意
 1)Worker configuration の削除について
【4】Kafkaクラスタ構築手順

【0】AWS 上でのApache Kafkaの構築

* 色々な方法を取ることができる
 => とりあえず、調べたものをあげておく
 (もちろん、これ以外にも、例えば、EC2で構築することも可能だが)

1)Amazon MSK

* 今回のテーマ。
 => 後述「Amazon MSK」で、ここではスルー

2)Amazon ECS

* ECS = Amazon Elastic Container Service
 => Dockerのようなコンテナを管理するサービス

https://aws.amazon.com/jp/ecs/features/

* 詳細は、以下の関連記事を参照のこと

Amazon ECS / Fargate ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2022/04/03/000000

3)Amazon EKS

* EKS = Amazon Elastic Kubernetes Service
 => Kubernetesのマネージドサービス
* 詳細は、以下の関連記事を参照のこと

Amazon EKS ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/02/23/000000

【1】Amazon MSK

* MSK = Amazon Managed Streaming for apache Kafka
 => マネージドなApache Kafkaの環境を提供

https://aws.amazon.com/jp/msk/features/

1)動画解説

* AWS Black Belt Online Seminar
 => 一時間と長いので、2倍速で再生するといいかも

https://youtu.be/q5loJWz-uiY?t=164
MSK の説明から見たい場合
https://youtu.be/q5loJWz-uiY?t=946

2)公式からのドキュメント

AWS での Apache Kafka の実行のためのベストプラクティス
https://aws.amazon.com/jp/blogs/news/best-practices-for-running-apache-kafka-on-aws/

3)料金

https://youtu.be/q5loJWz-uiY?t=2584

より

[1] ブローカーのインスタンス料金(1秒ごとに請求)
[2] ブローカーストレージの料金
[3] データ転送料金
[4] 拡張モニタリングを有効にした場合、利用量に応じて請求

ただし、最終的には、以下の公式サイトで料金は見積もった方がいいが、、、

https://aws.amazon.com/jp/msk/pricing/

## 4)Kafka サポートVersion

* 以下の中から選択可能
 => 2023/06/04現在の推奨バージョンは、Apache Kafka バージョン 2.8.1

https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/supported-kafka-versions.html

【2】Amazon MSKのサービス構成

1)MSK Cluster

* Kafka クラスタを作成
 => 「通常版」と「サーバレス版」を選択できる

2)MSK Clusters configuration

* ブローカー、トピック、および Apache ZooKeeper ノードのカスタム設定

https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-configuration.html

3)MSK Cluster / Managed VPC connections

* 新しい追加された機能。(クラスタ独自のVPCを作成してくれる?)

4)MSK Connect

* Kafka Connect を作成

https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-connect.html

* MSK Connect の詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2023/05/20/003516

5)MSK Connect / Custom plugin

* Kafka Connect の Custom Plugin

https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/mkc-create-plugin.html

6)MSK Connect / Worker configuration

* MSK Connect のWorker 設定

https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-connect-workers.html
https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-connect-workers.html#msk-connect-supported-worker-config-properties

【3】使用上の注意

1)Worker configuration の削除について

* 2023/05/30 現在、Worker configuration については、
 GUI上でも、AWS CLI 上でも削除機能はない

【4】Kafkaクラスタ構築手順

[1] AWS ManagementコンソールのAmazon MSK 画面から
 「Create cluster」ボタン押下
[2] 「Create cluster」画面から、以下の項目を入力。

 * Cluster creation method: 「Quick create」or「Custom create」を選択
 => 「Quick create」の場合、VPCなど勝手に作ってくれる(ただし、DefaultVPCに作成されてしまう)
 => 「Custom create」の場合、「Step2: Networking」「Step3: Security」
  「Step4: Metrics and tags」「Step5: Review and create」と設定工程が増える
  (VPCやSecurity Groupは事前に用意しておくといい)
 * Cluster name: 任意のクラスタ名(e.g. demo-msk-cluster)
 * General cluster properties
  + Cluster type: 「Serverless」 or 「Provisioned」
 => 「Provisioned」の場合、Apache Kafka versionを選択可能
 => 以下のサイトを参考に疎通を試すのもいい。

https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/create-serverless-cluster-client.html
https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-serverless-create-topic.html
https://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-serverless-produce-consume.html

参考文献

https://qiita.com/mksamba/items/a73542200ac3facac44c

関連記事

Amazon MSK ~ 基本編 / Connector ~
https://dk521123.hatenablog.com/entry/2023/05/20/003516
Amazon MSK ~ AWS CLI
https://dk521123.hatenablog.com/entry/2023/06/03/003941
Apache Kafka ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/23/235534
Apache Kafka ~ 環境構築 / Docker compose編 ~
https://dk521123.hatenablog.com/entry/2023/04/24/153846
Apache Kafka ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/26/103421
Apache Kafka ~ Kafkaコマンド ~
https://dk521123.hatenablog.com/entry/2023/05/16/000000
Apache Kafka ~ Kafka Connect ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133
Apache Kafka ~ Strimzi ~
https://dk521123.hatenablog.com/entry/2023/05/08/000133
Apache Kafka ~ パフォーマンスチューニング ~
https://dk521123.hatenablog.com/entry/2023/05/28/151212
Amazon ECS / Fargate ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2022/04/03/000000
Amazon EKS ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/02/23/000000
IAM ~ Service-Linked Roles ~
https://dk521123.hatenablog.com/entry/2023/01/22/000000
Terraform ~ AWS MSK ~
https://dk521123.hatenablog.com/entry/2023/05/14/122215