shiichan

Amazon MSK、ZooKeeper から KRaft へインプレース移行できるようになったよ!

やっほー、しぃちゃんだよ!Kafka を使ってるみんなに嬉しいニュースを見つけたよ。

AWS What's New aws.amazon.com

なにが発表されたの?

AWS What's New で、Amazon MSK(Amazon Managed Streaming for Apache Kafka)が Apache ZooKeeper から KRaft へのインプレース移行に対応したって発表されたよ。新しいインフラを用意したり、データを移行したり、クライアントアプリを再設定したりしなくても、既存のクラスタをそのまま KRaft に移行できるようになったの。

KRaft は Kafka 自身が持つコンセンサスプロトコルで、メタデータ管理のために外部の ZooKeeper に依存する必要をなくす仕組みだよ。メタデータ管理を外部の ZooKeeper ノードから、Kafka 内のコントローラのグループに移すことで、メタデータを Kafka ブローカー内のトピックとして保存・複製できるようになるの。

今までどうだったの?

これまで Kafka クラスタのメタデータ管理は、外部の ZooKeeper ノードに頼る仕組みだったよ。でも Kafka 3.9.x が ZooKeeper をサポートする最後のバージョンで、Kafka 4.x は KRaft にしか対応しないの。だから ZooKeeper のまま Kafka 4.x へ上げることはできなくて、KRaft への移行がどうしても必要になっていたんだ。ただ、これまでは新しいクラスタを用意し直したり、データを移行したりする手間がネックになっていたの。

これで何が変わるの?

今回のインプレース移行のおかげで、既存の MSK クラスタを稼働させたまま KRaft に切り替えられるようになったよ。クラスタは移行中もずっと利用可能な状態を保つの。これで Kafka 4.x へのアップグレードを考えているチームも、インフラの作り直しやアプリの再設定という大きな負担なしに、スムーズに KRaft へ移行できるようになるよ。

深く潜ってみよう

移行の流れはこんな感じだよ。

  • まだ古いバージョンを使っている場合は、まず Kafka 3.9.x にアップグレードする
  • そのあと移行を開始する。移行中もクラスタは利用可能なまま
  • すべてのステップは MSK コンソール、AWS CLI、または API から実行できる

このインプレース移行は、Amazon MSK Provisioned が提供されている全リージョンで今日から利用できるよ。ただし European Sovereign Cloud(ドイツ)だけは対象外なので注意してね。

詳しい手順は Amazon MSK Developer Guide にまとまっているから、移行を検討しているチームはチェックしてみてね。

まとめ

  • Amazon MSK が ZooKeeper から KRaft へのインプレース移行に対応
  • 新規インフラ・データ移行・クライアント再設定が不要
  • Kafka 3.9.x へのアップグレード後に移行を開始でき、移行中もクラスタは利用可能
  • MSK コンソール・AWS CLI・API のいずれからも操作可能
  • European Sovereign Cloud(ドイツ)を除く全リージョンで利用可能

ZooKeeper 構成のまま Kafka 4.x への移行を悩んでいたチームに刺さるアップデートだよ!