カスタム MSK 設定 - Amazon Managed Streaming for Apache Kafka

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

カスタム MSK 設定

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

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

connections.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 です。階層型ストレージに対応したクラスターの場合、有効なポリシーは delete のみです。
log.flush.interval.messages メッセージがディスクにフラッシュされるまでにログパーティションに蓄積されるメッセージの数。
log.flush.interval.ms トピック内のメッセージがディスクにフラッシュされるまでにメモリに保持される最大時間 (ミリ秒単位)。この値を設定しない場合、log.flush.Scheduler.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 より古いコンシューマーが存在する場合、コンシューマーの取得サイズも増やして、この大きさのレコードバッチを取得できるようにする必要があります。

最新のメッセージ形式バージョンでは、効率を上げるために、常にメッセージがバッチにグループ化されます。以前のメッセージ形式バージョンでは、非圧縮レコードはバッチにグループ化されません。その場合、この制限は単一のレコードにのみ適用されます。

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

min.insync.replicas

プロデューサーが acks を "all" (または "-1") に設定した場合、min.insync.replicas の値は、書き込みが成功したと見なされるために書き込みを確認する必要があるレプリカの最小数を指定します。この最小値を満たせない場合、プロデューサーは例外 (または) を発生させます。 NotEnoughReplicas NotEnoughReplicasAfterAppend

min.insync.replicas と acks の値を使用すると、より高い耐久性を保証できます。例えば、レプリケーション係数が 3 のトピックを作成し、min.insync.replicas を 2 に設定して、acks を "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 からの最後の書き込みが削除された場合、プロデューサー ID の有効期限切れが早くなる可能性があります。このプロパティの最小値は 1 ミリ秒です。
unclean.leader.election.enable ISR セットに含まれていないレプリカを、データ損失の可能性がある場合でも、最終手段として、リーダーとして使用するかどうかを指定します。
zookeeper.connection.timeout.ms

クライアントが接続を確立するまで待機する最大時間。 ZooKeeperこの値を設定しない場合、zookeeper.session.timeout.ms の値が使用されます。

MinValue = 6000

MaxValue (包括的) = 18000

zookeeper.session.timeout.ms

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

MinValue = 6000

MaxValue (包括的) = 18000

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

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

動的設定

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

注記

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

トピックレベルの設定

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

設定状態

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

  • ACTIVE

  • DELETING

  • DELETE_FAILED