翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon MSK トピックの階層型ストレージにログセグメントをコピーする方法
新規または既存のトピックに対して階層型ストレージを有効にすると、Apache Kafka はクローズ済みのログセグメントをプライマリストレージから階層型ストレージにコピーします。
-
Apache Kafka は、クローズ済みのログセグメントのみをコピーします。ログセグメント内のすべてのメッセージを階層型ストレージにコピーします。
-
アクティブセグメントは階層化の対象ではありません。ログセグメントサイズ (segment.bytes) またはセグメントロール時間 (segment.ms) によって、セグメントをクローズする速度と、その後 Apache Kafka がそれらを階層型ストレージにコピーする速度が制御されます。
階層型ストレージが有効になっているトピックの保持設定は、階層型ストレージが有効になっていないトピックの設定とは異なります。次のルールは、階層型ストレージが有効になっているトピックでのメッセージの保持を制御します。
-
Apache Kafka では、log.retention.ms (時間) と log.retention.bytes (サイズ) という 2 つの設定で保持を定義します。これらの設定によって、Apache Kafka がクラスターに保持するデータの合計期間とサイズが決まります。階層型ストレージモードを有効にするかどうかにかかわらず、これらの設定はクラスターレベルで設定します。トピックレベルの設定はトピック設定でオーバーライドできます。
階層型ストレージを有効にすると、プライマリの高性能ストレージ階層にデータを保存する期間を追加で指定できます。例えば、トピックの全体保持期間 (log.retention.ms) が 7 日間、ローカル保持期間 (local.retention.ms) が 12 時間に設定されている場合、クラスターのプライマリストレージは最初の 12 時間のみデータを保持します。低コストのストレージ階層では、7 日間フルにデータを保持します。
-
通常の保持設定はフルログに適用されます。これには階層型の部分とプライマリの部分が含まれます。
-
local.retention.ms 設定または local.retention.bytes 設定は、プライマリストレージでのメッセージの保持を制御します。フルログのデータがプライマリストレージ保持設定のしきい値 (local.retention.ms/bytes) に達すると、Apache Kafka はプライマリストレージ内のデータを階層型ストレージにコピーします。その後、データは有効期限切れの対象になります。
-
Apache Kafka がログセグメント内のメッセージを階層型ストレージにコピーすると、retention.ms または retention.bytes の設定に基づいてクラスターからメッセージが削除されます。
Amazon MSK における階層型ストレージのシナリオ例
このシナリオは、階層型ストレージが有効になっている場合に、プライマリストレージにメッセージを持つ既存のトピックがどのように動作するかを示しています。remote.storage.enable を true
に設定すると、このトピックで階層型ストレージが有効になります。この例では、retention.ms は 5 日間に設定され、local.retention.ms は 2 日間に設定されています。セグメントの有効期限が切れたときの一連のイベントは次のとおりです。
Time T0 - 階層型ストレージを有効にする前。
このトピックに対して階層型ストレージを有効にする前に、2 つのログセグメントがあります。セグメントの 1 つは、既存のトピックパーティション 0 に対してアクティブです。

Time T1 (2 日未満) - 階層型ストレージが有効。セグメント 0 が階層型ストレージにコピーされます。
このトピックに対して階層型ストレージを有効にすると、Apache Kafka は、セグメントが初期保持設定を満たした後に、ログセグメント 0 を階層型ストレージにコピーします。Apache Kafka は、セグメント 0 のプライマリストレージコピーも保持します。アクティブセグメント 1 は、まだ階層型ストレージへのコピー対象ではありません。このタイムラインではまだ、Amazon MSK によりセグメント 0 とセグメント 1 のメッセージに保持設定が適用されていません (local.retention.bytes/ms, retention.ms/bytes)。

Time T2 - ローカル保持が有効。
2 日後、Apache Kafka が階層型ストレージにコピーしたセグメント 0 に対して、プライマリ保持設定が有効になります。local.retention.ms を 2 日間に設定することでこれを決定します。これで、セグメント 0 はプライマリストレージから有効期限切れになります。アクティブセグメント 1 は、まだ有効期限の対象ではなく、階層型ストレージへのコピー対象でもありません。

Time T3 - 全体保持が有効。
5 日後、保持設定が有効になり、Kafka はログセグメント 0 と関連メッセージを階層型ストレージから消去します。セグメント 1 はアクティブであるため、まだ有効期限の対象ではなく、階層型ストレージへのコピー対象でもありません。セグメント 1 はまだクローズされていないため、セグメントロールの対象ではありません。
