カスタム MSK Express ブローカー設定 (読み取り/書き込みアクセス) - Amazon Managed Streaming for Apache Kafka

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタム MSK Express ブローカー設定 (読み取り/書き込みアクセス)

読み取り/書き込みブローカーの設定は、Amazon MSK の「設定の更新」機能を使用するか、Apache Kafka の AlterConfig API を使用して更新できます。Apache Kafka ブローカー設定は静的または動的のどちらか一方です。静的設定を適用するにはブローカーの再起動が必要ですが、動的設定にはブローカーの再起動は必要ありません。設定プロパティと更新モードの詳細については、「ブローカー設定の更新」を参照してください。

MSK Express ブローカーの静的設定

Amazon MSK を使用してカスタム MSK 設定ファイルを作成し、以下の静的プロパティを設定できます。Amazon MSK は、ユーザーが設定していないその他のすべてのプロパティを設定および管理します。静的設定ファイルは、MSK コンソールまたは configurations コマンドを使用して作成および更新できます。

プロパティ 説明 デフォルト値

allow.everyone.if.no.acl.found

このプロパティを false に設定する場合は、最初にクラスターに Apache Kafka ACL を定義していることを確認してください。事前に Apache Kafka ACL を定義していない場合、このプロパティを誤って設定すると、クラスターにアクセスできなくなります。その場合は、設定を再度更新し、このプロパティを正確に設定することで、クラスターへのアクセスを回復できます。

true

auto.create.topics.enable

サーバー上のトピックの自動作成を有効にします。

false

compression.type

特定のトピックに対する最終的な圧縮タイプを指定する。この設定では、標準の圧縮コーデックである gzip、snappy、lz4、zstd を受け入れます。

この設定では、さらに、圧縮なしと同等および「producer」の、生成元が設定した元の圧縮コーデックを保持する「uncompressed」も受け付けます。

Apache Kafka のデフォルト

connections.max.idle.ms

アイドル接続のタイムアウト (ミリ秒単位)。サーバーソケットプロセッサスレッドは、接続のアイドル状態がこのプロパティに対して設定されている値を超えると、その接続を閉じます。

Apache Kafka のデフォルト

delete.topic.enable

トピックの削除オペレーションを有効にします。この設定をオフにすると、管理ツールからトピックを削除することができません。

Apache Kafka のデフォルト

group.initial.rebalance.delay.ms

グループコーディネーターが、最初の再調整を実行する前に、新しいグループに追加のデータコンシューマーが参加するのを待機する時間。遅延を長くすると再調整を減らせる可能性がありますが、処理が開始されるまでの時間が長くなります。

Apache Kafka のデフォルト

group.max.session.timeout.ms

登録されたコンシューマーの最大セッションタイムアウト。タイムアウトを長くすると、コンシューマーはハートビート間でより多くの時間をメッセージの処理に使用できるようになりますが、その代償として、障害検出に要する時間が長くなります。

Apache Kafka のデフォルト

leader.imbalance.per.broker.percentage

ブローカーごとに許容されるリーダーの不均衡率。ブローカーごとにこの値を超えると、コントローラーはリーダーバランスをトリガーします。この値はパーセントで指定されます。

Apache Kafka のデフォルト

log.cleanup.policy 保存ウィンドウ外のセグメントのデフォルトのクリーンアップポリシー。カンマ区切りの有効なポリシーのリスト。有効なポリシーは delete および compact です。階層型ストレージに対応したクラスターの場合、有効なポリシーは、次の delete のみです。 Apache Kafka のデフォルト
log.message.timestamp.after.max.ms

メッセージのタイムスタンプおよびブローカーのタイムスタンプの間の許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプより遅い、またはそれと同じであることが可能であり、許容される最大差分は、この設定で指定された値によって決定される。

log.message.timestamp.type=CreateTime の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。この設定は、log.message.timestamp.type=LogAppendTime の場合無視されます。

86400000 (24 * 60 * 60 * 1000 ms、要するに 1 日)
log.message.timestamp.before.max.ms

ブローカーのタイムスタンプとメッセージタイムスタンプの許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプより早い、またはそれと同等であることが可能であり、許容される最大差分はこの設定で指定された値によって決定されます。

log.message.timestamp.type=CreateTime の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。この設定は、log.message.timestamp.type=LogAppendTime の場合無視されます。

86400000 (24 * 60 * 60 * 1000 ms、要するに 1 日)
log.message.timestamp.type メッセージ内のタイムスタンプがメッセージの作成時刻であるか、ログの追加時刻であるかを指定します。指定できる値は、CreateTime および LogAppendTime です。 Apache Kafka のデフォルト
log.retention.bytes 削除する前のログの最大サイズ。 Apache Kafka のデフォルト
log.retention.ms ログファイルを削除する前に保持するミリ秒数。 Apache Kafka のデフォルト
max.connections.per.ip 各 IP アドレスから許可される最大接続数。これは、max.connections.per.ip.overrides プロパティを使用してオーバーライドが設定されている場合、0 に設定できます。制限値に達した場合、その IP アドレスからの新規接続は切断されます。 Apache Kafka のデフォルト

max.incremental.fetch.session.cache.slots

維持される増分取得セッションの最大数。

Apache Kafka のデフォルト

message.max.bytes

Kafka が許容する最大レコードバッチサイズ。この値を増やし、0.10.2 より古いコンシューマーが存在する場合、コンシューマーの取得サイズも増やして、この大きさのレコードバッチを取得できるようにする必要があります。

最新のメッセージ形式バージョンでは、効率を上げるために、常にメッセージがバッチにグループ化されます。以前のメッセージ形式バージョンでは、非圧縮レコードはバッチにグループ化されません。その場合、この制限は単一のレコードにのみ適用されます。トピックレベル max.message.bytes の設定により、この値をトピックごとに設定できます。

Apache Kafka のデフォルト

num.partitions

各トピックに対するデフォルトのパーティション数。

1

offsets.retention.minutes

コンシューマーグループがすべてのコンシューマーを失う (つまり、空になる) と、オフセットはこの保持期間にわたって保持されてから破棄されます。スタンドアロンの消費者 (手動割り当てを使用するコンシューマー) の場合、オフセットは、最後のコミットの時刻に、この保持期間を加えた時刻に有効期限切れになります。

Apache Kafka のデフォルト

replica.fetch.max.bytes

パーティションごとに取得しようとするメッセージのバイト数。これは絶対最大値ではありません。フェッチの空でない最初のパーティションの最初のレコードバッチがこの値より大きい場合、進行を保証するためにそのレコードバッチが返されます。message.max.bytes (ブローカー設定) または max.message.bytes (トピック設定) は、ブローカーが受け入れる最大レコードバッチサイズを定義します。

Apache Kafka のデフォルト

replica.selector.class

ReplicaSelector を実装する完全修飾クラス名。ブローカーは、この値を使用して優先リードレプリカを見つけます。消費者が最も近いレプリカから取得できるようにするには、このプロパティorg.apache.kafka.common.replica.RackAwareReplicaSelectorを設定してください。

Apache Kafka のデフォルト

socket.receive.buffer.bytes

ソケットサーバーソケットの SO_RCVBUF バッファー。値が -1 の場合、OS のデフォルトが使用されます。

102400

socket.request.max.bytes

ソケットリクエストの最大バイト数。

104857600

socket.send.buffer.bytes

ソケットサーバーソケットの SO_SNDBUF バッファー。値が -1 の場合、OS のデフォルトが使用されます。

102400

transaction.max.timeout.ms

トランザクションの最大タイムアウト。クライアントのリクエストしたトランザクション時間がこの値を超えると、ブローカーは InitProducerIdRequest でエラーを返します。これにより、クライアントが大きすぎるタイムアウトを設定するのを防ぎ、トランザクションに含まれるトピックから読み取りを行うコンシューマーが停止するのを回避することができます。

Apache Kafka のデフォルト

transactional.id.expiration.ms

トランザクションコーディネーターが、トランザクション ID を有効期限切れにする前に、現在のトランザクションのトランザクションステータスの更新の受信を待機する時間 (ミリ秒単位)。この設定は、プロデューサー ID の有効期限にも影響します。これは、指定されたプロデューサー ID の有効期限は、指定されたプロデューサー ID での最後の書き込みからこの時間が経過すると切れるためです。トピックの保持設定が原因でプロデューサー ID からの最後の書き込みが削除された場合、プロデューサー ID の有効期限切れが早くなる可能性があります。このプロパティの最小値は 1 ミリ秒です。

Apache Kafka のデフォルト

Express ブローカーの動的設定

Apache Kafka AlterConfig API または Kafka-configs.sh ツールを使用して、次の動的設定を編集できます。Amazon MSK は、ユーザーが設定していないその他のすべてのプロパティを設定および管理します。ブローカーの再起動を必要としない クラスター-レベルおよびブローカーレベルの設定プロパティを動的に設定できます。

プロパティ 説明 デフォルトの 値

advertised.listeners

listeners 設定プロパティと異なる場合、クライアントが使用するための リスナー を公開します。IaaS 環境では、これはブローカーがバインドするインターフェイスとは異なる必要がある場合があります。これを設定しない場合、リスナー の値が使用されます。リスナーとは異なり、0.0.0.0 メタ-アドレスを広告することは無効である。

また、listeners とは異なり、このプロパティにはポートが重複している可能性があるため、ある リスナー が別の リスナー のアドレスをアドバタイズするように設定できます。外部ロードバランサーが使用されている場合、これが有用な場合があります。

このプロパティはブローカーごとに設定されます。

null

compression.type

特定のトピックの最終的な圧縮タイプ。このプロパティは、スタンダードの圧縮コーデック (gzipsnappylz4、および zstd) に設定できます。また、uncompressed に設定することもできます。この値は、圧縮しないことと同等です。値を producer に設定すると、プロデューサーが設定した元の圧縮コーデックが保持されます。

Apache Kafka のデフォルト
log.cleaner.delete.retention.ms ログ圧縮されたトピックの削除用ツームストーンマーカーを保持する時間。この設定は、最終段階の有効なスナップショットを取得するために、消費者がオフセット 0 から開始した場合に読み取りを完了する必要がある時間にも制限を与えます。そうしないと、スキャンが完了する前に削除用ツームストーンが収集される場合があります。 86400000 (24 * 60 * 60 * 1000 ms、要するに 1 日)、Apache Kafka デフォルト
log.cleaner.min.compaction.lag.ms ログ内でメッセージが圧縮されずに保持される最小時間。この設定は、圧縮処理中のログにのみ適用されます。 0、Apache Kafka デフォルト
log.cleaner.max.compaction.lag.ms ログ内でメッセージが圧縮対象外となる最大時間。この設定は、圧縮処理中のログにのみ適用されます。この設定は、[7日間、Long.Max]の範囲に制限されます。 9223372036854775807、Apache Kafka デフォルト

log.cleanup.policy

保存ウィンドウ外のセグメントのデフォルトのクリーンアップポリシー。カンマ区切りの有効なポリシーのリスト。有効なポリシーは delete および compact です。階層型ストレージに対応したクラスターの場合、有効なポリシーは、次の delete のみです。

Apache Kafka のデフォルト

log.message.timestamp.after.max.ms

メッセージのタイムスタンプおよびブローカーのタイムスタンプの間の許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプより遅い、またはそれと同じであることが可能であり、許容される最大差分は、この設定で指定された値によって決定される。log.message.timestamp.type=CreateTime の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。この設定は、log.message.timestamp.type=LogAppendTime の場合無視されます。

86400000 (24 * 60 * 60 * 1000 ms、要するに 1 日)

log.message.timestamp.before.max.ms

ブローカーのタイムスタンプとメッセージタイムスタンプの許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプより早い、またはそれと同等であることが可能であり、許容される最大差分はこの設定で指定された値によって決定されます。log.message.timestamp.type=CreateTime の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。この設定は、log.message.timestamp.type=LogAppendTime の場合無視されます。

86400000 (24 * 60 * 60 * 1000 ms、要するに 1 日)

log.message.timestamp.type

メッセージ内のタイムスタンプがメッセージの作成時刻であるか、ログの追加時刻であるかを指定します。指定できる値は、CreateTime および LogAppendTime です。

Apache Kafka のデフォルト

log.retention.bytes

削除する前のログの最大サイズ。

Apache Kafka のデフォルト

log.retention.ms

ログファイルを削除する前に保持するミリ秒数。

Apache Kafka のデフォルト

max.connection.creation.rate

ブローカーでいつでも許可される最大接続作成レート。

Apache Kafka のデフォルト

max.connections

ブローカーで同時に許可される接続の最大数。この制限は、max.connections.per.ip を使用して設定された IP ごとの制限に加えて適用されます。

Apache Kafka のデフォルト

max.connections.per.ip

各 IP アドレスから許可される最大接続数。これは、max.connections.per.ip.overrides プロパティを使用してオーバーライドが設定されている場合、0 に設定できます。制限値に達した場合、その IP アドレスからの新規接続は切断されます。

Apache Kafka のデフォルト

max.connections.per.ip.overrides

デフォルトの最大接続数に対する、IP アドレスまたはホスト名ごとのオーバーライドをコンマ区切りで列挙したリスト。例として値は hostName:100,127.0.0.1:200 です

Apache Kafka のデフォルト

message.max.bytes

Kafka が許容する最大レコードバッチサイズ。この値を増やし、0.10.2 より古いコンシューマーが存在する場合、コンシューマーの取得サイズも増やして、この大きさのレコードバッチを取得できるようにする必要があります。最新のメッセージ形式バージョンでは、効率を上げるために、常にメッセージがバッチにグループ化されます。以前のメッセージ形式バージョンでは、非圧縮レコードはバッチにグループ化されません。その場合、この制限は単一のレコードにのみ適用されます。トピックレベル max.message.bytes の設定により、この値をトピックごとに設定できます。

Apache Kafka のデフォルト

producer.id.expiration.ms

トピックパーティションリーダーがプロデューサー ID を期限切れにする前に待機する時間 (ミリ秒単位) プロデューサー ID は、関連するトランザクションが進行中の間は有効期限切れになりません。プロデューサー ID は、トピックの保持設定によりそのプロデューサー ID からの最後の書き込みが削除された場合、より早く期限切れになる可能性があることに注意してください。この値を再試行中に期限切れを防ぐため、またメッセージの重複を防止するために、同じまたは、delivery.timeout.msそれ以上に設定することが有効です。ただし、ほとんどのユースケースではデフォルト値で十分です。

Apache Kafka のデフォルト

Express ブローカーのトピックレベルの設定

Apache Kafka コマンドを使用して、新規および既存のトピックのトピックレベルの設定プロパティを設定するか変更することができます。トピックレベルの設定を指定できない場合、Amazon MSK はブローカーのデフォルト設定を使用します。ブローカーレベルの設定と同様に、Amazon MSK はトピックレベルの設定プロパティの一部を変更から保護します。例としては、レプリケーション係数、min.insync.replicasunclean.leader.election.enable などがあります。レプリケーション係数の値が3以外の値でトピックを作成しようとすると、Amazon MSK はデフォルトでレプリケーション係数3 が設定されたトピックを作成します。トピックレベルの設定プロパティの詳細と設定方法の例については、Apache Kafka のドキュメントの「Topic-Level Configs」を参照してください。

プロパティ 説明

cleanup.policy

この設定は、ログセグメントで使用する保持ポリシーを指定します。「削除」ポリシー (デフォルト) は、古いセグメントの保持期間またはサイズ制限に達した場合にそれらを破棄します。「コンパクト」ポリシーはログ圧縮を有効にし、各キーに対して最新の値を保持します。両方のポリシーをカンマ区切りで指定することも可能です (例: 「delete,compact」)。この場合、保持時間とサイズの設定に基づき古いセグメントは破棄され、保持されたセグメントは圧縮されます。Express ブローカーにおける圧縮は、パーティション内のデータが 256 MB に達した後にトリガーされます。

compression.type

特定のトピックに対する最終的な圧縮タイプを指定する。この設定は、標準の圧縮コーデック (gzipsnappylz4zstd) を受け入れます。さらに、圧縮なし、およびproducer同等の設定を受け入れますuncompressed;これは、プロデューサーが設定した元の圧縮コーデックを保持することを意味します。

delete.retention.ms

ログ圧縮されたトピックの削除用ツームストーンマーカーを保持する時間。この設定は、最終段階の有効なスナップショットを取得するために、消費者がオフセット 0 から開始した場合に読み取りを完了する必要がある時間にも制限を与えます。そうしないと、スキャンが完了する前に削除用ツームストーンが収集される場合があります。

この設定のデフォルト値は 86400000 (24 * 60 * 60 * 1000 ms、要するに 1 日)、Apache Kafka Default

max.message.bytes

Kafka が許可する最大レコードバッチサイズ (圧縮が有効な場合、圧縮後のサイズ)。この値を増やし、より年長の消費者が存在する場合は、消費者がこれほど大きなレコードバッチを取得できるように、0.10.2消費者のフェッチサイズも増やす必要がある。最新のメッセージ形式バージョンでは、効率を上げるために、レコードは常にバッチにグループ化されます。以前のメッセージ形式バージョンでは、圧縮されていないレコードはバッチにグループ化されず、この制限は単一のレコードにのみ適用されます。これは、トピックレベルのmax.message.bytes configでトピックごとに設定できます。

message.timestamp.after.max.ms

この設定は、メッセージのタイムスタンプとブローカーのタイムスタンプの間の許容されるタイムスタンプ差を設定します。メッセージのタイムスタンプはブローカーのタイムスタンプより遅い、またはそれと同じであることが可能であり、許容される最大差分は、この設定で指定された値によって決定される。message.timestamp.type=CreateTime の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。この設定は、message.timestamp.type=LogAppendTime の場合無視されます。

message.timestamp.before.max.ms

この設定は、ブローカーのタイムスタンプとメッセージのタイムスタンプの間の許容されるタイムスタンプ差を設定します。メッセージのタイムスタンプはブローカーのタイムスタンプより早い、またはそれと同等であることが可能であり、許容される最大差分はこの設定で指定された値によって決定されます。message.timestamp.type=CreateTime の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。この設定は、message.timestamp.type=LogAppendTime の場合無視されます。

message.timestamp.type

メッセージ内のタイムスタンプが、メッセージ作成時刻であるか ログ 追記時刻かを定義する。この値は CreateTime または LogAppendTime のいずれかでなければなりません

min.compaction.lag.ms

ログ内でメッセージが圧縮されずに保持される最小時間。この設定は、圧縮処理中のログにのみ適用されます。

この設定のデフォルト値は 0、Apache Kafka Default

max.compaction.lag.ms

ログ内でメッセージが圧縮対象外となる最大時間。この設定は、圧縮処理中のログにのみ適用されます。この設定は、[7日間、Long.Max]の範囲に制限されます。

この設定のデフォルト値は 9223372036854775807、Apache Kafka Default です。

retention.bytes

この設定は、パーティション (ログセグメントで構成される) が成長できる最大サイズを制御します。これにより、「削除」保持ポリシーを使用している場合に、古いログセグメントを破棄してスペースを確保するタイミングを決定します。デフォルトではサイズ制限はなく、時間制限のみが設定されています。この制限はパーティションレベルで適用されるため、パーティションの数を掛けてトピックの保持をバイト単位で計算します。さらに、retention.bytes configurationsegment.ms および segment.bytes 設定とは独立して動作します。さらに、retention.bytesがゼロに設定されている場合、新しいセグメントのローリングが開始されます。

retention.ms

この設定は、「削除」保持ポリシーを使用している場合に、古いログセグメントを破棄して空き領域を確保する前に、ログを保持する最大時間を制御します。これは、消費者がデータを読み取るまでの所要時間に関する SLA (サービスレベル契約) を表しています。-1 に設定する場合、時間制限は適用されません。さらに、retention.ms 設定は segment.ms および segment.bytes 設定とは独立して動作します。さらに、retention.ms条件が満たされた場合、新しいセグメントのローリングが開始されます。