翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 設定は、プライマリストレージでのメッセージの保持を制御します。Apache Kafka は、ローカルの保持設定とは無関係に、閉じたログセグメントを (segment.bytes または segment.ms に基づいて) 閉じたらすぐに階層型ストレージにコピーします。セグメントが階層型ストレージにコピーされると、セグメントは local.retention.ms または local.retention.bytes のしきい値に達するまでプライマリストレージに残ります。この時点で、データはプライマリストレージから削除されますが、階層型ストレージでは引き続き使用できます。これにより、古いデータが低コストの階層型ストレージから提供される間、最新のデータを高性能のプライマリストレージに保持して、高速アクセスを実現できます。
-
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 を、閉じた直後に階層型ストレージにコピーします。セグメントは、保持設定ではなく segment.bytes または segment.ms 設定に基づいて閉じます。Apache Kafka はプライマリストレージにもコピーを保持します。アクティブなセグメント 1 は、まだアクティブで閉じていないため、階層型ストレージにコピーすることはできません。このタイムラインではまだ、Amazon MSK によりセグメント 0 とセグメント 1 のメッセージに保持設定が適用されていません (local.retention.bytes/ms, retention.ms/bytes)。
Time T2 - ローカル保持が有効。
2 日後、セグメント 0 のローカル保持しきい値に達します。local.retention.ms を 2 日間に設定することでこれを決定します。セグメント 0 はプライマリストレージから削除されるようになりましたが、階層型ストレージで引き続き使用できます。セグメント 0 は、ローカル保持の有効期限が切れた時刻 T2 ではなく、閉じた時刻 T1 にすでに階層型ストレージにコピーされていることに注意してください。 T2 アクティブなセグメント 1 は、まだアクティブなため、削除することも階層型ストレージにコピーすることもできません。
Time T3 - 全体保持が有効。
5 日後、保持設定が有効になり、Kafka はログセグメント 0 と関連メッセージを階層型ストレージから消去します。セグメント 1 はアクティブであるため、まだ有効期限の対象ではなく、階層型ストレージへのコピー対象でもありません。セグメント 1 はまだクローズされていないため、セグメントロールの対象ではありません。