[MSK 設定] MSK 設定 - Amazon Managed Streaming for Apache Kafka

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

[MSK 設定] MSK 設定

Amazon MSK を使用して、次のプロパティを設定するカスタム MSK 設定を作成できます。明示的に設定しないプロパティは、Amazon MSK 設定 にある値を取得します。設定プロパティの詳細については、「Apache Kafka の設定」を参照してください。

アパッチカフカの設定プロパティ
名前 説明
allow.everyone.if.no.acl.found このプロパティをに設定する場合はfalse、最初にクラスターに Apache Kafka ACL を定義していることを確認してください。falseこのプロパティをに設定し、最初に Apache Kafka ACL を定義しない場合、クラスターにアクセスできなくなります。その場合は、設定を再度更新し、trueこのプロパティをに設定することで、クラスターへのアクセスを回復できます。
auto.create.topics.enable サーバーでのトピックの自動作成を有効にします。
compression.type 特定のトピックの最終的な圧縮タイプ。このプロパティは、スタンダードの圧縮コーデック (gzipsnappylz4、および zstd) に設定できます。さらに受け入れますuncompressed。この値は、圧縮しない場合と同じです。値をに設定するとproducer、プロデューサーが設定した元の圧縮コーデックが保持されます。

接続数.max.idle.ms

アイドル接続のタイムアウト (ミリ秒) サーバーソケットプロセッサスレッドは、このプロパティに設定した値を超えてアイドル状態の接続を閉じます。
default.replication.factor 自動的に作成されるトピックのデフォルトのレプリケーション係数。
delete.topic.enable トピックの削除オペレーションを有効にします。この設定をオフにすると、管理ツールからトピックを削除することはできません。
group.initial.rebalance.delay.ms グループコーディネーターが最初のリバランスを実行する前に、より多くのデータコンシューマーが新しいグループに参加するまでグループコーディネーターが待機する時間。遅延が長くなると、再調整が少なくなる可能性がありますが、処理が開始されるまでの時間が長くなります。
group.max.session.timeout.ms 登録されたコンシューマーの最大セッションタイムアウト。タイムアウトが長くなると、障害の検出に時間がかかる代わりに、消費者はハートビートの合間にメッセージを処理する時間が長くなります。
group.min.session.timeout.ms 登録されたコンシューマーの最小セッションタイムアウト。タイムアウトを短くすると、コンシューマーのハートビートが頻繁に発生しますが、障害の検出が速くなります。これにより、ブローカーのリソースが圧迫される可能性があります。
leader.imbalance.per.broker.percentage ブローカーごとに許容されるリーダーの不均衡率。コントローラーは、リーダー残高がブローカーごとにこの値を超えると、リーダーバランスをトリガーします。この値はパーセントで指定されます。
log.cleaner.delete.retention.ms Apache Kafka が削除されたレコードを保持する時間。最小値は 0 です。
log.cleaner.min.cleanable.ratio

この設定プロパティには、0 から 1 までの値を指定できます。この値は、ログコンパクターがログのクリーンアップを試行する頻度を決定します (ログコンパクションが有効になっている場合)。デフォルトでは、Apache Kafka は、ログの 50% 以上が圧縮されている場合、ログのクリーニングを回避します。この比率は、ログが重複によって浪費する最大スペースを制限します (50% の場合、ログの最大 50% が重複する可能性があることを意味します)。比率が高いほど、クリーニングは少なく、効率的ですが、ログ内の無駄なスペースが多くなります。

log.cleanup.policy 保存ウィンドウ外のセグメントのデフォルトのクリーンアップポリシー。カンマ区切りの有効なポリシーのリスト。有効なポリシーは delete および compact です。
log.flush.interval.messages メッセージがディスクにフラッシュされる前にログパーティションに蓄積されるメッセージの数。
log.flush.interval.ms 任意のトピックのメッセージがディスクにフラッシュされる前にメモリに残っている最大時間 (ミリ秒単位)。この値を設定しない場合は、log.flus.interval.ms の値が使用されます。最小値は 0 です。
log.message.timestamp.difference.max.ms ブローカーがメッセージを受信したときのタイムスタンプと、メッセージで指定されたタイムスタンプとの最大時間差。log.message.timestamp.type= の場合CreateTime、タイムスタンプの差がこのしきい値を超えると、メッセージは拒否されます。log.message.timestamp.type = の場合、この設定は無視されますLogAppendTime。
log.message.timestamp.type メッセージのタイムスタンプがメッセージの作成時刻であるか、ログの追加時刻であるかを指定します。指定できる値は、CreateTime および LogAppendTime です。
log.retention.bytes 削除する前のログの最大サイズ。
log.retention.hours log.retention.ms プロパティの 3 次である、ログファイルを削除する前に保持する時間数。
log.retention.minutes log.retention.ms プロパティに対してセカンダリである、ログファイルを削除する前に保持する時間(分)。この値を設定しない場合は、log.retention.hours の値が使用されます。
log.retention.ms ログファイルを削除する前に保持するミリ秒数(ミリ秒単位)。設定されていない場合は、log.retention.minutes の値が使用されます。
log.roll.ms 新しいログセグメントがロールアウトされるまでの最大時間(ミリ秒単位)。このプロパティを設定しない場合は、log.roll.hours の値が使用されます。このプロパティの可能な最小値は 1 です。
log.segment.bytes 1 つのログファイルの最大サイズ。
max.incremental.fetch.session.cache.slots 維持される増分取得セッションの最大数。
message.max.bytes

Kafka が許容する最大のレコードバッチサイズ。この値を大きくして、0.10.2 より古いコンシューマーがいる場合は、コンシューマーのフェッチサイズも大きくして、これだけ大きなレコードバッチをフェッチできるようにする必要があります。

最新のメッセージフォーマットバージョンでは、効率化のため、メッセージは常にバッチにグループ化されます。以前のメッセージ形式のバージョンでは、圧縮されていないレコードをバッチにグループ化しないため、このような場合、この制限は 1 つのレコードにのみ適用されます。

この値は、トピックレベルの max.message.bytes 設定でトピックごとに設定できます。

min.insync.replicas

プロデューサーが ACK を"all" (または"-1") に設定した場合、min.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in.in. この最小値に達しない場合、プロデューサーは例外を発生させます ( NotEnoughReplicas または NotEnoughReplicasAfterAppend)。

min.insync.replicas と acks の値を使うと、より高い耐久性を保証できます。たとえば、レプリケーション係数が 3 のトピックを作成し、min.insync.replicas を 2 に設定し、それから ack を 2"all" に設定して作成することができます。これにより、大部分のレプリカが書き込みを受け取らない場合、プロデューサーが例外を発生させることができます。

num.io.threads サーバーがリクエストを処理するために使用するスレッドの数。これにはディスク I/O が含まれる場合があります。
num.network.threads サーバーがネットワークからの要求を受信し、応答を送信するために使用するスレッドの数。
num.partitions トピックごとのログパーティションのデフォルト数。
num.recovery.threads.per.data.dir スタートアップ時にログをリカバリし、シャットダウン時にログをフラッシュするために使用されるデータディレクトリごとのスレッド数。
num.replica.fetchers ソースブローカーからのメッセージのレプリケートに使用されるフェッチャースレッドの数。この値を大きくすると、フォロワーブローカーのI/O並列処理のレベルを上げることができます。
offsets.retention.minutes コンシューマーグループがすべてのコンシューマーを失う(つまり、空になる)と、オフセットはこの保持期間にわたって保持されてから破棄されます。スタンドアロンコンシューマー(つまり、手動割り当てを使用するコンシューマー)の場合、オフセットは最後のコミットの時刻にこの保持期間を加えた後に期限切れになります。
offsets.topic.replication.factor オフセットトピックのレプリケーション係数。可用性を確保するには、この値を高く設定してください。内部トピックの作成は、クラスターサイズがこのレプリケーション係数の要件を満たすまで失敗します。
replica.fetch.max.bytes パーティションごとに取得しようとするメッセージのバイト数。これは絶対最大値ではありません。フェッチの最初の空でないパーティションの最初のレコードバッチがこの値より大きい場合は、進行状況を確認するためにレコードバッチが返されます。message.max.bytes (ブローカー設定) または max.message.bytes (トピック設定) は、ブローカーが受け付ける最大レコードバッチサイズを定義します。
replica.fetch.response.max.bytes フェッチ応答全体で予想される最大バイト数。レコードはバッチで取得され、フェッチの最初の空でないパーティションの最初のレコードバッチがこの値より大きい場合でも、進行状況を確認するためにレコードバッチが返されます。これは絶対最大値ではありません。message.max.bytes (ブローカー設定)または max.message.bytes (トピック設定)プロパティは、ブローカーが受け付ける最大レコードバッチサイズを指定します。
replica.lag.time.max.ms フォロワーがフェッチリクエストを送信していないか、またはリーダーのログ終了オフセットまでこのミリ秒数以上消費されていない場合、リーダーはフォロワーを ISR から削除します。

MinValue: 10000

MaxValue(インクルーシブ) = 30000

replica.selector.class を実装する完全修飾クラス名 ReplicaSelector。ブローカーはこの値を使用して優先リードレプリカを見つけます。Apache Kafka バージョン 2.4.1 以降を使用していて、コンシューマーが最も近いレプリカからフェッチできるようにするには、このプロパティをに設定しますorg.apache.kafka.common.replica.RackAwareReplicaSelector。詳細については、「Apache Kafka バージョン 2.4.1 (代わりに 2.4.1.1 を使用) 」を参照してください。
replica.socket.receive.buffer.bytes ネットワークリクエスト用のソケット受信バッファ。
socket.receive.buffer.bytes ソケットサーバーソケットの SO_RCVBUF バッファー。このプロパティに設定できる最小値は -1 です。値が -1 の場合、Amazon MSK は OS のデフォルトを使用します。
socket.request.max.bytes ソケットリクエストの最大バイト数。
socket.send.buffer.bytes ソケットサーバーソケットの SO_SNDBUF バッファー。このプロパティに設定できる最小値は -1 です。値が -1 の場合、Amazon MSK は OS のデフォルトを使用します。
transaction.max.timeout.ms トランザクションの最大タイムアウト。クライアントの要求されたトランザクション時間がこの値を超えると、ブローカーはエラーを返します InitProducerIdRequest。これにより、クライアントのタイムアウトが大きすぎることを防ぎ、トランザクションに含まれるトピックを読み取るコンシューマーが停止する可能性があります。
transaction.state.log.min.isr トランザクショントピックの min.insync.replicas 設定がオーバーライドされました。
transaction.state.log.replication.factor トランザクショントピックのレプリケーション係数。可用性を高めるには、このプロパティをより高い値に設定します。内部トピックの作成は、クラスターサイズがこのレプリケーション係数の要件を満たすまで失敗します。
transactional.id.expiration.ms トランザクションコーディネーターが、トランザクション ID の有効期限が切れる前に、現在のトランザクションのトランザクションステータスの更新を受信するまで待機する時間(ミリ秒単位)。この設定は、指定されたプロデューサー ID での最後の書き込みからこの時間が経過するとプロデューサー ID の有効期限切れにも影響します。トピックの保持設定が原因でプロデューサー ID からの最後の書き込みが削除された場合、プロデューサー ID の有効期限が早くなる可能性があります。このプロパティの最小値は 1 ミリ秒です。
unclean.leader.election.enable ISR セットに含まれていないレプリカを最終手段として、リーダーとして使用するかどうかを指定します。ただし、そうするとデータが失われる可能性があります。
zookeeper.connection.timeout.ms クライアントが接続を確立するまでの最大待機時間 ZooKeeper。この値を設定しない場合は、Zookeeper.セッション.timeout.ms の値が使用されます。
zookeeper.session.timeout.ms

Apache ZooKeeper セッションのタイムアウト (ミリ秒単位)。

MinValue = 6000

MaxValue(インクルーシブ) = 18000

カスタム MSK 設定を作成する方法、すべての設定を一覧表示する方法、または説明する方法については、「Amazon MSK 設定オペレーション」を参照してください。カスタム MSK 構成で MSK クラスターを作成するか、クラスターを新しいカスタム構成で更新するには、を参照してくださいAmazon MSK: 仕組み

既存の MSK クラスターをカスタム MSK 設定で更新すると、Amazon MSK は必要に応じてローリングリスタートを行い、ベストプラクティスを使用して顧客のダウンタイムを最小限に抑えます。例えば、Amazon MSK は各ブローカーを再起動した後、次のブローカーに移動する前に、設定の更新中にブローカーが見逃した可能性のあるデータにブローカーがcatch くようにします。

ダイナミック構成

Amazon MSK が提供する設定プロパティに加えて、ブローカーの再起動を必要としないクラスターレベルおよびブローカーレベルの設定プロパティを動的に設定できます。一部の構成プロパティは動的に設定できます。これらは、Apache Kafka ドキュメントの「ブローカー設定」の表で読み取り専用とマークされていないプロパティです。動的設定とサンプルコマンドについては、Apache Kafka ドキュメントの「ブローカー設定の更新」を参照してください。

注記

advertised.listeners プロパティは設定できますが、listeners プロパティは設定できません。

トピックレベルの設定

Apache Kafka コマンドを使用して、新規および既存のトピックのトピックレベルの設定プロパティを設定するか変更することができます。トピックレベルの設定プロパティとその設定方法の例の詳細については、Apache Kafka ドキュメントの「トピックレベルの設定」を参照してください。

設定状態

Amazon MSK 設定は、次に示す状態のいずれかになります。設定に対してオペレーションを実行するには、設定が ACTIVE または DELETE_FAILED 状態である必要があります。

  • ACTIVE

  • DELETING

  • DELETE_FAILED