AWS:Amazon MSKについて
みなさん、こんにちは。ちゃみみです。
今日は、Kafkaについてブラックベルト記事をサマッてみました。試験対策の備忘録として。
MSKって何の略やねん!ってとこなんですが、Amazon Managed Streaming for Apache Kafka
と呼ぶらしいです。
そして何者?って話なんですが、分散データストリーミング・プラットフォームでありスケーラビリティに優れた、パブリッシュ・サブスクライブ・モデルの分散メッセージング基盤とのこと。
Kafkaの構成として、クライアントと呼ばれるプロデューサーとコンシューマーが存在し、
プロデューサーは、メッセージの発行(パブリッシュ)を行う
コンシューマーは、メッセージの購読(サブスクライブ)を行う
このクラスターって複数のブローカーで構成され、トピック内のパーティションを分散キューとしてブローカーに配置してメッセージを管理する感じでこのクラスターを経由してプロデューサーは、クラスターにメッセージを送信、コンシューマーはクラスターからメッセージを取り出して利用する仕組み。
ちょいちょい聞きなれない用語が出ていますが、Kafkaのクラスター構成↓
ブローカー:クラスターとして動作して、データの受配信を担当する。
トピック:メッセージを種別で管理する。
パーティション:ブローカー上に分散配置され、トピックのメッセージが格納される。
トピックとパーティションの関係について、メッセージを冗長化を確保するために複数のレプリカを構成している。
↑でリーダーとフォロワーレプリカがあるが、これらの間でレプリカの状態が定義されていてリーダーとフォロワーが同じ状態のレプリカを「InSyncReplica」と呼んでいて、一定時間同期できない場合は、「OutSyncReplica」と呼ぶ。
InSyncReplicaの設定は、min.insync.replicasパラメータで設定をする。
プロデューサーは、トピックと値を指定することで書き込みを行い、各パーティションへのメッセージの書き込みはリーダーレプリカでのみ実施される。
コンシューマーのメッセージの読み込みについてもプロデューサーと同じく、リーダーレプリカでのみから行われる。
オフセットという登場サービスについて
これって、メッセージがパーティションに入れられた際に付与されるシーケンス番号でZookeeper、Kafka自体が保存していて、コンシューマーが追跡しているとのこと。
で、このオフセットによってコンシューマーが継続的にKafkaに保存されるメッセージの読み出し履歴を管理することが可能である。
AmazonMSKの監視についてのまとめ~
・CloudWatchでメトリクス監視が前提。
・クラスターのモニタリングレベルが選択可能で以下より選択。
→基本モニタリング:無料
→拡張ブローカーレベルモニタリング:有料
→拡張トピックレベルモニタリング:有料
セキュリティのまとめ~
・データの保護
→保存データの暗号化:基本KMSで暗号化、ManagedCMKかカスタマーCMK
→データ通信の暗号化:TLS暗号化※通信の暗号化をするとパフォーマンスは約30%低下
・IAMによる権限管理
→IAMポリシー、ロール制御
→タグ付けとタグベースのIAM設定
・クライアントの認証
→TLSクライアント認証:クライアントとブローカー間の通信のTLS暗号化を有効化する
・コンプライアンス
→PCI、HIPAA BAAの認証
構成管理にあたって、クラスターを更新するとブローカーとの順次の接続断が発生するので注意する。
具体的にクラスターのステータスは更新中となり、ブローカーはローリングアップグレードされて順次接続断が発生する。
クラスターのスケーリングについては、大きく3つカテゴライズされており
・ストレージの拡張:増やせても減らすことは今のところできない
・ブローカー数の拡張:ストレージ同様増やせても減らせない
・ブローカーサイズの拡張:BlackBelt発行時点で未サポート状態
そのため、拡張検討は慎重に行う必要があることに注意。
以上がざっくりMSKのまとめになります。
2021年11月01日
以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。