25.2. 最も近いレプリカからのメッセージの消費


ラックアウェアネスをコンシューマーで使用して、最も近いレプリカからデータを取得することもできます。これは、Kafka クラスターが複数のデータセンターにまたがる場合に、ネットワークの負荷を軽減するのに役立ちます。また、パブリッククラウドで Kafka を実行する場合にコストを削減することもできます。ただし、レイテンシーが増加する可能性があります。

最も近いレプリカから使用できるようにするには、Kafka クラスターでラックアウェアネスを設定し、RackAwareReplicaSelector を有効にする必要があります。レプリカセレクタープラグインは、クライアントが最も近いレプリカから消費できるようにするロジックを提供します。デフォルトの実装では、LeaderSelector を使用して、常にクライアントのリーダーレプリカを選択します。replica.selector.classRackAwareReplicaSelector を指定すると、デフォルトの実装から切り替わります。

レプリカ対応セレクターを有効にした rack 設定例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    config:
      # ...
      replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
    # ...

Kafka ブローカーの設定に加えて、コンシューマーに client.rack オプションを指定する必要があります。client.rack オプションには、コンシューマーが稼動しているrack IDを指定する必要があります。RackAwareReplicaSelector は、マッチングした broker.rackclient.rack ID を関連付けて、最も近いレプリカを見つけ、そこからデータを取得します。同じラック内に複数のレプリカがある場合、RackAwareReplicaSelector は常に最新のレプリカを選択します。ラック ID が指定されていない場合や、同じラック ID を持つレプリカが見つからない場合は、リーダーレプリカにフォールバックします。

図25.1 同じアベイラビリティーゾーンのレプリカから消費するクライアントの例

同じアベイラビリティーゾーン内のレプリカから消費されます。

コネクターが最も近いレプリカからのメッセージを消費するように、Kafka Connect、MirrorMaker 2、および Kafka Bridge を設定することもできます。KafkaConnectKafkaMirrorMaker2、および KafkaBridge カスタムリソースでラックアウェアネスを有効にします。この設定ではアフィニティールールは設定されませんが、affinity または topologySpreadConstraints を設定することもできます。詳細は、Pod スケジューリングの設定 を参照してください。

Streams for Apache Kafka を使用して Kafka Connect をデプロイする場合、KafkaConnect カスタムリソースの rack セクションを使用して client.rack オプションを自動的に設定できます。

Kafka Connect の rack 設定例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
# ...
spec:
  # ...
  rack:
    topologyKey: topology.kubernetes.io/zone
  # ...

Streams for Apache Kafka を使用して MirrorMaker 2 をデプロイする場合、KafkaMirrorMaker2 カスタムリソースの rack セクションを使用して client.rack オプションを自動的に設定できます。

MirrorMaker 2 の rack 設定例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
# ...
spec:
  # ...
  rack:
    topologyKey: topology.kubernetes.io/zone
  # ...

Streams for Apache Kafka を使用して Kafka Bridge をデプロイする場合、KafkaBridge カスタムリソースの rack セクションを使用して client.rack オプションを自動的に設定できます。

Kafka Bridge の rack 設定例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
# ...
spec:
  # ...
  rack:
    topologyKey: topology.kubernetes.io/zone
  # ...

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.