Apache Kafkaは、分散ストリーミングプラットフォームを介してデータストリームを処理できるようにするオープンソースのストリーム処理およびメッセージブローカーソフトウェアアプリケーションです。これは、送信者と受信者の間のメッセージングシステムとして機能します。 Apache Kafkaは分散アーキテクチャに基づいているため、高いフォールトトレランスとスケーラビリティ機能を提供します。もともとはLinkedInによって開発されましたが、現在はApacheSoftwareFoundationのプロジェクトです。 Apache Kafkaは、Kafkaクラスターに対してデータを読み書きしたり、サードパーティシステムとの間でデータをインポートおよびエクスポートしたりするためのインターフェイスを提供します。
この投稿では、ApacheKafkaをRockyLinux8にインストールする方法を説明します。
前提条件
- Atlantic.NetクラウドプラットフォームでRockyLinux8を実行しているサーバー
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてRockyLinux8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–Javaをインストールする
Apache KafkaはJavaベースのアプリケーションであるため、Javaをサーバーにインストールする必要があります。インストールされていない場合は、次のコマンドを使用してインストールできます。
dnf install java-11-openjdk-devel -y
Javaがインストールされたら、次のコマンドを使用してJavaのインストールを確認します。
java --version
次の出力でJavaバージョンを取得します。
openjdk 11.0.13 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
ステップ3– RockyLinux8にApacheKafkaをインストールする
まず、Apacheの公式Webサイトにアクセスし、wgetコマンドを使用して最新バージョンのApacheKafkaをダウンロードします。
wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
ダウンロードが完了したら、次のコマンドを使用してダウンロードしたファイルを抽出します。
tar -xvzf kafka_2.13-3.0.0.tgz
ダウンロードしたファイルが抽出されたら、抽出したディレクトリを/ usr/localディレクトリに移動します。
mv kafka_2.13-3.0.0/ /usr/local/kafka
終了したら、次のステップに進むことができます。
ステップ4–ZookeeperとKafkaのSystemdサービスファイルを作成する
本番環境では、ZookeeperとKafkaの両方をバックグラウンドで実行するsystemdサービスファイルを作成することをお勧めします。
まず、次のコマンドを使用してZookeeperのsystemdサービスファイルを作成します。
nano /etc/systemd/system/zookeeper.service
次の行を追加します:
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties ExecStop=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
ファイルを保存して閉じ、次のコマンドを使用してKafkaのsystemdサービスファイルを作成します。
nano /etc/systemd/system/kafka.service
次の行を追加します:
[Unit] Description=Apache Kafka Server Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk" ExecStart=/usr/bin/bash /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties ExecStop=/usr/bin/bash /usr/local/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、ZookeeperサービスとKafkaサービスの両方を開始し、システムの再起動時に開始できるようにします。
systemctl start zookeeper systemctl start kafka systemctl enable zookeeper systemctl enable kafka
次のコマンドを使用して、両方のサービスを確認することもできます。
systemctl status zookeeper kafka
次の出力が得られます:
● zookeeper.service - Apache Zookeeper server Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 07:51:56 UTC; 42s ago Docs: http://zookeeper.apache.org Main PID: 33802 (java) Tasks: 28 (limit: 11411) Memory: 91.4M CGroup: /system.slice/zookeeper.service └─33802 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCIn> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,676] INFO zookeeper.snapshot.compression.method = CHECKED (org.apache.zookeeper.> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,676] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache.z> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,679] INFO Snapshot loaded in 22 ms, highest zxid is 0x0, digest is 1371985504 (o> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,679] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache.z> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,683] INFO Snapshot taken in 3 ms (org.apache.zookeeper.server.ZooKeeperServer) Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,703] INFO zookeeper.request_throttler.shutdownTimeout = 10000 (org.apache.zookee> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,741] INFO PrepRequestProcessor (sid:0) started, reconfigEnabled=false (org.apach> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,764] INFO Using checkIntervalMs=60000 maxPerMinute=10000 maxNeverUsedIntervalMs=> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,765] INFO ZooKeeper audit is disabled. (org.apache.zookeeper.audit.ZKAuditProvid> Oct 22 07:52:12 RockyLinux8 bash[33802]: [2021-10-22 07:52:12,102] INFO Creating new log file: log.1 (org.apache.zookeeper.server.persistence.> ● kafka.service - Apache Kafka Server Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 07:52:09 UTC; 29s ago Docs: http://kafka.apache.org/documentation.html Main PID: 34147 (java) Tasks: 69 (limit: 11411) Memory: 331.6M CGroup: /system.slice/kafka.service └─34147 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancy> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,881] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeC> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,899] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Starting socket server> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,981] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started data-plane acc> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,988] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started socket server > Oct 22 07:52:15 RockyLinux8 bash[34147]: [2021-10-22 07:52:15,069] INFO Kafka version: 3.0.0 (org.apache.kafka.common.utils.AppInfoParser) Oct 22 07:52:15 RockyLinux8 bash[34147]: [2021-10-22 07:52:15,069] INFO Kafka commitId: 8cb0a5e9d3441962 (org.apache.kafka.common.utils.AppInf> Oct 22 07:52:15 RockyLinux8 bash[34147]: [2021-10-22 07:52:15,069] INFO Kafka startTimeMs: 1634889134988 (org.apache.kafka.
ステップ5–Kafkaでトピックを作成する
Apache Kafkaをテストするには、サーバー上に少なくとも1つのトピックを作成する必要があります。
ディレクトリをApacheKafkaに変更し、次のコマンドを使用してtopic1という名前のテストトピックを作成します。
cd /usr/local/kafka/ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic1
これで、次のコマンドを使用して、作成したトピックを確認できます。
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
次の出力が得られます:
topic1
Kafkaは、プロデューサーとコンシューマーの2つのAPIを提供します。プロデューサーはイベントを作成する責任があり、コンシューマーはそれらを画面に表示します:
まず、次のコマンドを実行して、次のコマンドを使用してevent1という名前のイベントを作成します。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic event1
ストリーミングしてコンシューマーに表示するテキストを入力します。
>Hi, this is my first event
サンプル出力:
[2021-10-22 07:58:05,318] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {event1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
別のターミナルを開き、次のコマンドを実行して、生成されたイベントデータをリアルタイムで表示します。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic event1 --from-beginning
次の出力が得られます:
Hi, this is my first event
結論
上記のガイドでは、Rocky Linux8にApacheKafkaをインストールする方法を学習しました。詳細については、ApacheKafkaのドキュメントページにアクセスしてください。 Atlantic.NetからのVPSホスティングでApacheKafkaを使い始めましょう!