10.4. MirrorMaker 2.0 を使用した Kafka クラスター間でのデータの同期
MirrorMaker 2.0 を使用して、設定を介して Kafka クラスター間のデータを同期します。
従来のモードで MirrorMaker 2.0 を実行すると、以前のバージョンの MirrorMaker は継続してサポートされます。
設定では以下を指定する必要があります。
- 各 Kafka クラスター
- TLS 認証を含む各クラスターの接続情報
レプリケーションのフローおよび方向
- クラスター対クラスター
- トピック対トピック
- レプリケーションルール
- コミットされたオフセット追跡間隔
この手順では、プロパティーファイルの設定を作成し、MirrorMaker スクリプトファイルを使用して接続を設定するときにプロパティーを渡すことで、MirrorMaker 2.0 を実装する方法を説明します。
MirrorMaker 2.0 は、Kafka Connect を使用してクラスター間のデータ転送を行います。Kafka は、データレプリケーションの MirrorMaker シンクおよびソースコネクターを提供します。MirrorMaker スクリプトの代わりにコネクターを使用する場合は、Kafka Connect クラスターでコネクターを設定する必要があります。詳細は Apache Kafka のドキュメントを参照してください。
作業を始める前に
設定ファイルのサンプルは、./config/connect-mirror-maker.properties にあります。
前提条件
- レプリケートしている各 Kafka クラスターノードのホストに AMQ Streams がインストールされている必要があります。
手順
テキストエディターでサンプルファイルを開くか、新しいプロパティーファイルを作成し、そのファイルを編集して、各 Kafka クラスターの接続情報およびレプリケーションフローを追加します。
以下の例は、cluster-1 と cluster- 2 の 2 つのクラスター を接続する設定を示しています。クラスター名は
clustersプロパティーで設定可能です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 各 Kafka クラスターはそのエイリアスで識別されます。
- 2
- ブートストラップアドレス およびポート 443 を使用した cluster-1 の接続情報。どちらのクラスターもポート 443 を使用して、OpenShift Routes を使用して Kafka に接続します。
- 3
ssl.プロパティーは、cluster-1 の TLS 設定を定義します。- 4
- cluster-2 の接続情報
- 5
ssl.プロパティーは、cluster-2 の TLS 設定を定義します。- 6
- cluster-1 クラスターから cluster- 2 クラスターへのレプリケーションフローが有効になっている。
- 7
- cluster-1 クラスターのすべてのトピックを cluster- 2 クラスター に複製します。
- 8
- cluster-2 クラスターから cluster- 1 クラスターへのレプリケーションフローが有効になっている。
- 9
- cluster-2 クラスターから特定のトピックを cluster- 1 クラスター に複製します。
- 10
- リモートトピック名の変更に使用する区切り文字を定義します。
- 11
- 有効にすると、同期されたトピックに ACL が適用されます。デフォルトは
falseです。 - 12
- 新しいトピックを同期させる間隔。
- 13
- 同期する新規コンシューマーグループをチェックする間隔。
オプション: 必要な場合は、リモートトピックの名前の自動名前を上書きするポリシーを追加します。その名前の前にソースクラスターの名前を追加する代わりに、トピックが元の名前を保持します。
このオプションの設定は、active/passive バックアップおよびデータ移行に使用されます。
replication.policy.class=io.strimzi.kafka.connect.mirror.IdentityReplicationPolicy
replication.policy.class=io.strimzi.kafka.connect.mirror.IdentityReplicationPolicyCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: コンシューマーグループのオフセットを同期する場合は、設定を追加して同期を有効にします。
refresh.groups.interval.seconds=60 sync.group.offsets.enabled=true sync.group.offsets.interval.seconds=60 emit.checkpoints.interval.seconds=60
refresh.groups.interval.seconds=60 sync.group.offsets.enabled=true1 sync.group.offsets.interval.seconds=602 emit.checkpoints.interval.seconds=603 Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲットクラスターで ZooKeeper および Kafka を起動します。
su - kafka /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
su - kafka /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター接続設定と、プロパティーファイルで定義したレプリケーションポリシーで MirrorMaker を起動します。
/opt/kafka/bin/connect-mirror-maker.sh /config/connect-mirror-maker.properties
/opt/kafka/bin/connect-mirror-maker.sh /config/connect-mirror-maker.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow MirrorMaker はクラスター間の接続を設定します。
各ターゲットクラスターに対して、トピックが複製されていることを確認します。
/bin/kafka-topics.sh --bootstrap-server <BrokerAddress> --list
/bin/kafka-topics.sh --bootstrap-server <BrokerAddress> --listCopy to Clipboard Copied! Toggle word wrap Toggle overflow