RHEL 8にKafkaをインストールする方法
Apache Kafkaは、分散型ストリーミングプラットフォームです。その豊富なAPI(アプリケーションプログラミングインターフェイス)セットを利用して、ほとんどすべてのものをKafkaにデータのソースとして接続でき、他方では、多数の消費者を設定して、処理のためにレコードのストリームを受け取ることができます。Kafkaは高いスケーラビリティを持ち、データストリームを信頼性が高くフォールトトレラントな方法で保存します。接続の観点から見ると、Kafkaは多くの異種システム間の架け橋として機能し、それによって提供されたデータを転送および永続化する能力に依存できます。
このチュートリアルでは、Red Hat Enterprise Linux 8 に Apache Kafka をインストールし、管理の容易さのために systemd ユニットファイルを作成し、付属のコマンドラインツールを使って機能をテストします。
このチュートリアルでは、あなたは学びます:
- Apache Kafkaのインストール方法
- KafkaとZookeeperのためのsystemdサービスを作成する方法
- コマンドラインクライアントでKafkaをテストする方法
コマンドラインからKafkaトピックのメッセージを消費する。
ソフトウェアの要件と使用される規約
Redhat 8にKafkaをインストールする方法:ステップバイステップの手順
Apache KafkaはJavaで書かれているため、インストールを進めるにはOpenJDK 8がインストールされている必要があります。Kafkaは、分散協調サービスであるApache Zookeeperに依存しており、これもJavaで書かれていて、ダウンロードするパッケージに含まれています。HA(高可用性)サービスを単一ノードにインストールすることはその目的を損ないますが、KafkaのためにZookeeperをインストールして実行します。
最近のミラーからKafkaをダウンロードするには、公式のダウンロードサイトを確認する必要があります。そこから
.tar.gzファイルのURLをコピーできます。wgetを使用し、貼り付けたURLを使用してターゲットマシンにパッケージをダウンロードします:wget https://www-eu.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz -O /opt/kafka_2.11-2.1.0.tgz/optディレクトリに入って、アーカイブを抽出します:cd /opt tar -xvf kafka_2.11-2.1.0.tgzそして、私たちの生活を楽にするために、今作成した
/opt/kafka_2_11-2.1.0ディレクトリを指す/opt/kafkaという名前のシンボリックリンクを作成してください。ln -s /opt/kafka_2.11-2.1.0 /opt/kafka私たちは、
zookeeperとkafkaサービスの両方を実行する非特権ユーザーを作成します。useradd kafkaそして、抽出した全ディレクトリの所有者を新しいユーザーに再帰的に設定します:
chown -R kafka:kafka /opt/kafka*私たちは以下の内容でユニットファイル
/etc/systemd/system/zookeeper.serviceを作成します:[Unit] Description=zookeeper After=syslog.target network.target [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.targetシンボリックリンクを作成したので、バージョン番号を書く必要が3回もないことに注意してください。次の単位ファイルであるKafkaのための
/etc/systemd/system/kafka.serviceにも同様のことが適用され、次の構成行が含まれています:[Unit] Description=Apache Kafka Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka Group=kafka ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target新しいユニットファイルを読み込むために
systemdを再読み込みする必要があります:systemctl daemon-reloadこれから新しいサービスを始めることができます(この順序で):
systemctl start zookeeper systemctl start kafkaすべてがうまくいけば、
systemdは以下の出力に似た両方のサービスの状態を報告するはずです:systemctl status zookeeper.service zookeeper.service - zookeeper Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-10 20:44:37 CET; 6s ago Main PID: 11628 (java) Tasks: 23 (limit: 12544) Memory: 57.0M CGroup: /system.slice/zookeeper.service 11628 java -Xmx512M -Xms512M -server [...] systemctl status kafka.service kafka.service - Apache Kafka Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-10 20:45:11 CET; 11s ago Main PID: 11949 (java) Tasks: 64 (limit: 12544) Memory: 322.2M CGroup: /system.slice/kafka.service 11949 java -Xmx1G -Xms1G -server [...]オプションで、両方のサービスの自動起動をブート時に有効にすることができます。
systemctl enable zookeeper.service systemctl enable kafka.service機能をテストするために、1つのプロデューサーと1つのコンシューマークライアントでKafkaに接続します。プロデューサーによって提供されたメッセージは、コンシューマーのコンソールに表示される必要があります。しかし、その前に、この2つがメッセージを交換するための媒体が必要です。我々はKafkaの用語で
topicと呼ばれる新しいデータチャネルを作成し、プロバイダーが公開し、コンシューマーが購読する場所になります。トピックをFirstKafkaTopicと呼びます。このトピックを作成するためにkafkaユーザーを使用します。/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic FirstKafkaTopicコマンドラインから消費者クライアントを起動して、前のステップで作成された(この時点では空の)トピックにサブスクライブします:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning別の端末でプロデューサークライアントを起動し、作成したトピックにいくつかのメッセージを公開します。利用可能なトピックを確認するためにKafkaをクエリできます:
/opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181 FirstKafkaTopicそして、消費者が加入しているものに接続し、メッセージを送信します:
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic FirstKafkaTopic > new message published by producer from console #2消費者端末にメッセージが間もなく表示されるはずです:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning new message published by producer from console #2
コンソールとそこに開いているクライアントをそのままにします。このコンソールは、プロデューサークライアントで公開するメッセージを受信する場所です。
メッセージが表示されれば、私たちのテストは成功しており、Kafkaのインストールは意図した通りに動作しています。多くのクライアントがこのチュートリアルで作成した単一ノードのセットアップでも、同じ方法で1つまたは複数のトピックレコードを提供し、消費することができます。
