3.2. 高可用性のためのトピックの複製
基本的なトピックプロパティーは、トピックのデフォルト数のパーティションおよびレプリケーション係数を設定します。これは、トピックが自動的に作成される場合を含め、これらのプロパティーを明示的に設定せずに作成されたトピックに適用されます。
# ... num.partitions=1 auto.create.topics.enable=false default.replication.factor=3 min.insync.replicas=2 replica.fetch.max.bytes=1048576 # ...
高可用性環境の場合は、トピックに対してレプリケーション係数を 3 以上に引き上げ、必要な同期レプリカの最小数をレプリケーション係数より 1 少なく設定することを推奨します。
auto.create.topics.enable
プロパティーはデフォルトで有効になっており、存在しないトピックがプロデューサーおよびコンシューマーによって必要になると自動的に作成されます。トピックの自動作成を使用する場合は、num.partitions
を使用してトピックのデフォルトのパーティション数を設定できます。しかし、一般的には、このプロパティーは無効にして、明示的にトピックを作成することでトピックを詳細に制御できるようにします。
また、データの持続性 を確保するために、topic の設定で min.insync.replicas
を設定し、producer の設定で acks=all
を使用してメッセージ配信の確認を行う必要があります。
replica.fetch.max.bytes
を使用して、リーダーパーティションを複製する各フォロワーが取得したメッセージの最大サイズ (バイト単位) を設定します。この値は、平均のメッセージサイズおよびスループットに応じて変更します。読み取り/書き込みバッファーに必要なメモリー割り当ての合計を考慮すると、利用可能なメモリーも、すべてのフォロワーで乗算した時のレプリケートメッセージの最大サイズに対応できる必要があります。
delete.topic.enable
プロパティーはデフォルトで有効になっており、トピックの削除を許可します。実稼働環境では、誤ってトピックが削除され、データが失われるのを防ぐために、このプロパティーを無効にする必要があります。ただし、トピックを一時的に有効にして、トピックを削除してから再度無効にできます。
OpenShift で Streams for Apache Kafka を実行する場合、Topic Operator は operator スタイルのトピック管理を提供できます。KafkaTopic
リソースを使用してトピックを作成できます。KafkaTopic
リソースを使用して作成されたトピックの場合、レプリケーション係数は spec.replicas
で設定されます。delete.topic.enable
が有効になっている場合は、KafkaTopic
リソースを使用してトピックを削除できます。
# ... auto.create.topics.enable=false delete.topic.enable=true # ...