こんにちは。
今回は、Amazon MSKにおけるスケールアップとスケールアウトについてフォーカスします。
Amazon MSK はフルマネージド Kafka であり、クラスターを停止せずに スケールアップ(ブローカー性能の向上)やスケールアウト(ブローカー台数の増加)を行える点が魅力です。
この記事では、MSK のスケールアップ/スケールアウトの基礎や注意点の一部をまとめています。
前提条件
本記事で触れている内容は、以下の構成を前提としています。
-
ブローカータイプ:標準ブローカー(kafka.m5.large など)
-
クラスタタイプ:プロビジョンドクラスタ
-
メタデータ管理:Apache Zookeeper モード
Serverless や Express ブローカーなどはユースケースに応じて検討してください。
あくまで参考資料となります。環境によって最適解は変わるため、必要に応じて検討してください。
スケールアップとスケールアウトの違い
Amazon MSKのスケーリングには 2 つの方向があります。
スケールアップ(ブローカー性能を上げる方法)
ブローカーの vCPU / メモリ / ストレージ IOPSを大きくし、既存のクラスタ構成のまま性能を引き上げるアプローチです。
- ブローカー数は変化なし
- 性能が向上し、スループットやメタデータ処理が改善
- パーティション再配置などのデータ移動が不要
- ローリングアップデートのためクラスタの可用性を維持しやすい
- 接続文字列(bootstrap.servers)が変わらないため、クライアント側に影響が少ない
AWS の公式ドキュメントでも、Kafka の特性と MSK の運用観点から、以下の理由で スケールアウトよりスケールアップをまず検討することが推奨されています。
- パーティション再割り当てが不要
- ローリングリスタートのためクラスターのI/O停止なし(高可用性の構成になっていることが前提)
- クライアント側の設定変更が不要なため、全体的な運用コストが低い
特に、ブローカー追加後にパーティション再割り当てをトピックごとに行う必要があります。トピック数が多い場合、運用作業の負荷が高くなります。
スケールアウト(ブローカー台数を増やす方法)と注意点
ブローカー数を増やしてクラスタ容量やパーティション分散を強化する方法です。
ただし、運用上の注意点が多くスケールアップより負荷が高い操作です。
サブネットの IP アドレスを消費する
MSK のブローカーは サブネット内に EC2 と同様に配置されるため、スケールアウトに応じてサブネットのIPアドレスを使用します。
また、ブローカーの追加はAZごとになるため、下記の通り「3AZを利用するMSKクラスター」において「1つのブローカー」を追加すると合計で6個のブローカーとなります。
試しにMSKクラスターのスケールアウトを実施してみます。3AZを利用するMSKクラスターの場合、下記のENIが作成されています。Apache Zookeeperノードとブローカーの合計で6個となります。
次に、1ブローカーをAZごとに追加した場合です。
下記の通り、9個となっています。ブローカー数が3つ追加されているためです。
このように、ENIが増えていくためサブネットのIPアドレスの空きには十分注意してください。
スケールアウト時はクライアント設定も更新が必要
追加されたブローカーを活用するには、 bootstrap.servers に “全ブローカー” を含める必要があります。
bootstrap.servers=b-1.example:9092,b-2.example:9092,b-3.example:9092,b-4.example:9092
更新しないと…
- 新ブローカーが障害時のフェイルオーバー先にならない
- リーダーが移動しても接続先が偏る
- クラスタ拡張が性能向上につながらない
スケールアウトしたら、必ず全クライアント(Producer / Consumer)の設定を更新しましょう。スケールアップでは接続文字列が変わらないため、この作業は不要です。
スケールアウトの料金インパクト
スケールアウトは ブローカー数に比例して料金が増加します。3AZ 構成では 3の倍数での増加となるため注意が必要です。
参考例として、「m5.xlarge の MSK クラスターをスケールアウト」した場合の料金です。
| 構成 | 計算式 | 月額料金 |
| 現在(3ブローカー) | 3 × $0.543/時間 × 730時間 | $1,189.17 |
| スケールアウト後(6ブローカー) | 6 × $0.543/時間 × 730時間 | $2,378.34 |
※東京リージョンを利用した場合。またストレージサイズなど他のプロパティでも変動有。
3AZ 構成ではブローカーを最小 3 個単位で追加する必要があるため、スケールアウト時はコスト面の検討も必ず実施してください。
参考資料
公式にてスケールアップとスケールアウトについてまとめられた記事が公開されています。
より詳細なユースケースに応じた選択を下記から確認ください。




