【使い方】Apache KafkaのMirror Maker 2でミラーリング手順

 

★悩み★
・Apache Kafka間で定期的にデータを複製(ミラーリング)ってできるの?
・Apache KafkaのMirror Maker 2でミラーリングする手順を知りたい。
・そもそもApache KafkaのMirror Makerって何? どういう場面で使うの?


こういった「悩み」に答えます。

 

★本記事の内容★
① Apache KafkaのMirror Maker 2とは何か?を解説
② Apache KafkaのMirror Maker 2でミラーリングするための準備を解説
③ Apache KafkaのMirror Maker 2でミラーリングする手順を解説



これからご紹介する「【使い方】Apache KafkaのMirror Maker 2でミラーリング手順」を実践したことで、筆者は30分以内で「Apache KafkaのMirror Maker 2を使って、Apache Kafka間でデータの複製(ミラーリング)」ができました。

記事の前半では「Apache KafkaのMirror Makerを使う場面」を解説します。記事の後半では「Apache KafkaのMirror Maker 2でミラーリングする手順」を紹介します。

この記事を読み終えることで、「Apache Kafka間でのデータの複製(ミラーリング)を実現できる」状態になります。
 

★Apache Kafkaにおけるミラーリングとは★
Apache Kafkaにおけるミラーリングとは、「Apache Kafka内の『トピック』に保存されたメッセージを他のApache Kafkaにコピー(複製)する」ことです。



ちなみに、「そもそもApache Kafkaとは何か?」を知りたい方は、以下の記事をご覧ください。
 


 

Apache KafkaのMirror Maker 2とは何か?を解説


「Apache KafkaのMirror Maker 2とは何か?」に関してご紹介します。

★Apache KafkaのMirror Maker 2に関するご紹介事項★
・Apache KafkaのMirror Maker 2とは何か?や使い方をご紹介
・Apache KafkaのMirror Maker 2の仕組みをご紹介



以降で、上記「Apache KafkaのMirror Maker 2に関するご紹介事項」の各項目に関してご説明します。 
 

Apache KafkaのMirror Maker 2とは何か?【使い方も解説】

「Apache KafkaのMirror Maker 2とは何か?【使い方も解説】」に関してご紹介します。
 

「Apache KafkaのMirror Makerとは何か?」や「Apache KafkaのMirror Makerの使い方」に関して解説しますね。



Apache Kafkaには、「Apache Kafka間でトピックを複製する」機能として、「Mirror Maker」があります。Apache Kafkaの「Mirror Maker」を使うことで、簡単にApache Kafka間でトピック内に格納されたメッセージ(データ)の複製ができます。(下図参照)
 



Apache Kafkaの「Mirror Maker」を使うことで、以下の利点があります。
 

★Mirror Makerを使った場合の利点★
Mirror Makerを使うことで、「冗長性」や「耐障害性(災害復旧)」を実現できる為、可用性が向上します。



また、Apache Kafkaには、「Mirror Maker 1」と「Mirror Maker 2」が標準機能としてあります。「Mirror Maker 1」と「Mirror Maker 2」の違いは、以下となります。
 

★Mirror Maker 1 と Mirror Maker 2 の違い★
2021年11月10日時点では、Mirror Maker(MM1)および関連するクラスは非推奨になりました。そのため、Mirror Makerを使いたい場合は、Mirror Maker 2を使用する必要があります。

参照:Apache Kafkaの公式サイト



以上が、「Apache KafkaのMirror Maker 2とは何か?【使い方も解説】」となります。
 

Apache KafkaのMirror Maker 2の仕組み

「Apache KafkaのMirror Maker 2の仕組み」に関して解説します。
 

Apache KafkaのMirror Maker 2 が「どのようにして、トピック内のデータ(メッセージ)をミラーリングしているか」を説明しますね。



Apache KafkaのMirror Maker 2 によるミラーリングは、「複数のConsumer(トピックからデータを取得する機構)」と「1つのProducer(トピックにデータを格納する機構)」により実現しています。(下図参照)
 



Mirror Makerの仕組み上、以下に関して注意が必要です。
 

★Mirror Maker利用時に注意すること★
・Mirror Maker自身には、HA機能は含まれていない。
・ミラーリングの速度を上げたい場合、別のMirror Makerを起動する。



以上が、「Apache KafkaのMirror Maker 2の仕組み」となります。
 

「高可用性(Apache Kafkaクラスタの冗長性)」を実現したい場合、Apache KafkaのMirror Maker 2の利用を検討しましょう。


 

Apache KafkaのMirror Maker 2でミラーリングするための準備


「Apache KafkaのMirror Maker 2でミラーリングするための準備」に関してご紹介します。

★Apache KafkaのMirror Maker 2でミラーリングするための準備★
手順1:Apache Kafka をインストール
手順2:Apache Kafka の動作確認



上記の流れで、「Apache KafkaのMirror Maker 2でミラーリングするための準備」ができます。また、Mirror Maker 2 を使うために、以下のApache Kafka環境を構築します。(下図参照)
 


 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年10月30日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「Apache KafkaのMirror Maker 2でミラーリングするための準備」の各手順に関してご説明します。
 

手順1:Apache Kafka をインストール

「手順1:Apache Kafka をインストール」に関して解説します。
 

Mirror Maker 2 を使うためにも、Apache Kafkaをインストールしましょう。



「Apache Kafkaのインストール手順」に関しては、以下の記事をご覧ください。
 


 

既にApache Kafkaをインストールされている方は、本手順を省略してください。


以上で、「手順1:Apache Kafka をインストール」は完了です。
 

手順2:Apache Kafka の動作確認

「手順2:Apache Kafka の動作確認」に関して解説します。
 

Apache Kafkaが正常に動作するかを確認しましょう。



「Apache Kafkaを起動できるか」や「Apache Kafkaにメッセージの送信と取り出しができるか」を確認し、Apache Kafkaが正常に動作することを確認してください。手順に関しては、以下の記事をご覧ください。
 



以上で、「手順2:Apache Kafka の動作確認」は完了です。
 

上記の流れで、Apache KafkaのMirror Maker 2でミラーリングするための準備ができました。


 

Apache KafkaのMirror Maker 2でミラーリングする手順


「Apache KafkaのMirror Maker 2でミラーリングする手順」に関してご紹介します。

★Apache KafkaのMirror Maker 2でミラーリングする流れ★
手順1:Mirror Maker 2 の設定ファイルを編集
手順2:ミラーリング対象となるトピックにメッセージ(データ)を格納
手順3:Mirror Maker 2 を起動
手順4:Mirror Maker 2の動作確認



上記の流れで、「Apache KafkaのMirror Maker 2でミラーリング」ができます。また、上記手順で以下の「Apache Kafkaのミラーリング」を実現できます。(下図参照)
 


 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年10月30日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「Apache KafkaのMirror Maker 2でミラーリングする流れ」の各手順に関してご説明します。
 

手順1:Mirror Maker 2 の設定ファイルを編集

「手順1:Mirror Maker 2 の設定ファイルを編集」に関して解説します。
 

Apache KafkaのMirror Maker 2 を利用するために、Mirror Maker 2 の設定ファイルを編集しましょう。



Mirror Maker 2の設定ファイルである「connect-mirror-maker.properties」を編集しましょう。見直すべき設定値は、以下となります。

↓↓ 設定ファイル内で利用するクラスタのエイリアスを定義 ↓↓
clusters = primary, secondary

↓↓ 1つ目(primary)のApache Kafkaクラスタに所属するBrokerのIPアドレスとポートを設定 ↓↓
primary.bootstrap.servers = slave1:9092

↓↓ 2つ目(secondary)のApache Kafkaクラスタに所属するBrokerのIPアドレスとポートを設定 ↓↓
secondary.bootstrap.servers = slave2:9092

↓↓ 「1つ目のクラスタ」から「2つ目のクラスタ」にミラーリングしたい場合はtrueを設定 ↓↓
primary->secondary.enabled = true 

↓↓ 「1つ目のクラスタ」から「2つ目のクラスタ」にミラーリングしたいトピックを設定(今回はtestと設定) ↓↓
primary->secondary.topics = test



以上で、「手順1:Mirror Maker 2 の設定ファイルを編集」は完了です。
 

手順2:ミラーリング対象となるトピックにメッセージ(データ)を格納

「手順2:ミラーリング対象となるトピックにメッセージ(データ)を格納」に関して解説します。
 

ミラーリング対象となる「トピック」にメッセージ(データ)を格納しましょう。



Mirror Maker 2 でミラーリングしたいトピックにメッセージ(データ)を格納するために、以下のコマンドを順に実行してください。

[root@slave1 kafka_2.13-3.0.0]# ls
LICENSE  NOTICE  bin  config  libs  licenses  logs  site-docs
[root@slave1 kafka_2.13-3.0.0]# bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
>abcd
>aaaa
>aaaa
>aaaaaaa



コマンド実行後、「Error」などが表示されなかった場合、「正常にミラーリング対象となるトピックにメッセージ(データ)を格納できた」と判断できます。
 

以上で、「手順2:ミラーリング対象となるトピックにメッセージ(データ)を格納」は完了です。
 

手順3:Mirror Maker 2 を起動

「手順3:Mirror Maker 2 を起動」に関して解説します。
 

トピックをミラーリングするために、Mirror Maker 2 を起動しましょう。



Mirror Maker 2 を起動するために以下のコマンドを実行してください。

[root@slave2 kafka_2.13-3.0.0]# bin/connect-mirror-maker.sh config/connect-mirror-maker.properties 



コマンド実行後、「Error」などが出力されなかった場合、「正常にMirror Maker 2を起動できた」と判断できます。
 

以上で、「手順3:Mirror Maker 2 を起動」は完了です。
 

手順4:Mirror Maker 2の動作確認

「手順4:Mirror Maker 2の動作確認」に関して解説します。
 

Mirror Maker 2 を用いて、トピックのミラーリングができたかを確認しましょう。



トピックのミラーリングができたかを確認するために、以下のコマンドを順に実行してください。

[root@slave2 kafka_2.13-3.0.0]# bin/kafka-topics.sh --list --bootstrap-server localhost:9092
__consumer_offsets
heartbeats
kafka-test
mm2-configs.primary.internal
mm2-offsets.primary.internal
mm2-status.primary.internal
primary.checkpoints.internal
primary.heartbeats
primary.kafka-test
primary.test
test
[root@slave2 kafka_2.13-3.0.0]# bin/kafka-console-consumer.sh --topic primary.test --from-beginning --bootstrap-server slave2:9092
abcd
abcd
aaaa
aaaa
aaaaaaa
^CProcessed a total of 5 messages
[root@slave2 kafka_2.13-3.0.0]# 



コマンド実行後、ミラーリングされたトピックからデータを取得できた場合、「正常にMirror Maker 2 を用いてトピックをミラーリングできた」と判断できます。
 

以上で、「手順4:Mirror Maker 2の動作確認」は完了です。
 

上記の流れで、Apache KafkaのMirror Maker 2で対象のトピックをミラーリングできました。



ちなみに、「Apache KafkaのMirror Maker 2 を用いてどのような運用形態(Active-Activeなど)を構築できるのか」を知りたい方は、以下の参考書がオススメです。
 


 

【まとめ】Apache KafkaのMirror Maker 2でミラーリング手順【使い方】


いかがでしたでしょうか?Apache KafkaのMirror Maker 2 の利用場面、データの複製(ミラーリング)の進め方についての手順を解説し、以下の悩みを解決しました。

★悩み★
・Apache Kafka間で定期的にデータを複製(ミラーリング)ってできるの?
・Apache KafkaのMirror Maker 2でミラーリングする手順を知りたい。
・そもそもApache KafkaのMirror Makerって何? どういう場面で使うの?



適切に「connect-mirror-maker.properties」を設定し、Apache Kafkaに同梱された「connect-mirror-maker.sh」を実行することで、簡単にApache Kafka間でトピックのミラーリングを実現できます。ぜひあなたも本記事を参考に「Apache KafkaのMirror Maker 2でミラーリング」を実践してください。