Amazon MSK、ZooKeeper から KRaft へインプレース移行できるようになったよ!
やっほー、しぃちゃんだよ!Kafka を使ってるみんなに嬉しいニュースを見つけたよ。
AWS What's Newなにが発表されたの?
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 への移行を悩んでいたチームに刺さるアップデートだよ!