ウェブサイト検索

CentOSにCMAKを使用してApache Kafkaをインストールする方法


CentOSにCMAKを使用してApache Kafkaをインストールする方法

このページで

  1. 前提条件
  2. 始めに
  3. Javaをインストールする
  4. カフカをダウンロード
  5. KafkaとZookeeperのためのSystemdファイルを作成する
  6. CMAKをインストールして構成する
  7. CMAKサービスを開始する
  8. SELinuxとファイアウォールを設定する
  9. CMAKウェブUIにアクセスする
  10. Kafkaに最初のトピックを追加する
  11. 結論

Apache Kafkaは、ストリーミング分析、データ統合、およびミッションクリティカルなアプリケーションに使用される無料かつオープンソースのストリーミングプラットフォームです。ActiveMQやRabbitMQと比較して、Kafkaは優れたスループット、組み込みのパーティショニング、レプリケーション、および障害耐性を持っています。Kafkaは、大量のリアルタイム情報を効果的に処理できる分散メッセージエージェントです。

CMAKは「クラスターマネージャー」としても知られ、Yahooによって開発されたKafkaクラスタの管理に使用されます。CMAKを使用すると、複数のクラスタを管理し、トピック、コンシューマー、オフセット、ブローカー、レプリカの分配、パーティションの分配など、クラスタの状態を検査することができます。

このチュートリアルでは、CentOS 8サーバーにCMAKを使用してApache Kafkaストリーミングプラットフォームをインストールする方法を示します。

前提条件

  • CentOS 8を実行しているサーバー。
  • サーバーにルートパスワードが設定されています。

始めに

まず、システムパッケージを最新バージョンに更新することをお勧めします。次のコマンドを使用してすべてを更新できます:

dnf update -y

すべてのパッケージが更新されたら、次のコマンドで他の必要な依存関係をインストールしてください。

dnf install git unzip -y

完了したら、次のステップに進むことができます。

Javaをインストールする

KafkaはJavaに基づいているため、サーバーにJavaをインストールする必要があります。インストールされていない場合は、次のコマンドでインストールできます:

dnf install java-11-openjdk-devel -y

Javaがインストールされたら、次のコマンドを使用してインストールされたJavaのバージョンを確認できます。

java --version

次の出力を得るべきです:

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-CentOS-0centos8)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-CentOS-0centos8, mixed mode, sharing)

完了したら、次のステップに進むことができます。

カフカをダウンロード

Kafkaをダウンロードする前に、Kafkaを保存するディレクトリを作成してください。以下のコマンドで作成できます。

mkdir /usr/local/kafka-server

次に、ディレクトリをkafka-serverに変更し、以下のコマンドを使用してKafkaの最新バージョンをダウンロードします:

cd /usr/local/kafka-server
wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz

ダウンロードが完了したら、以下のコマンドでダウンロードしたファイルを展開します:

tar -xvzf kafka_2.13-2.6.0.tgz --strip 1

完了したら、次のステップに進むことができます。

KafkaとZookeeperのためのSystemdファイルを作成する

次に、ZookeeperとKafkaサービスを管理するためのsystemdサービスファイルを作成する必要があります。

まず、次のコマンドを使用してZookeeperサービスファイルを作成します:

nano /etc/systemd/system/zookeeper.service

次の行を追加してください:

[Unit]
Description=Apache Zookeeper Server
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/usr/local/kafka-server/bin/zookeeper-server-start.sh /usr/local/kafka-server/config/zookeeper.properties
ExecStop=/usr/local/kafka-server/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

作業が完了したら、ファイルを保存して閉じてください。

次に、以下のコマンドを使用してKafkaサービスファイルを作成します:

nano /etc/systemd/system/kafka.service

次の行を追加してください:

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk"
ExecStart=/usr/local/kafka-server/bin/kafka-server-start.sh /usr/local/kafka-server/config/server.properties
ExecStop=/usr/local/kafka-server/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

ファイルを保存して閉じたら、次のコマンドでsystemdデーモンを再読み込みします:

systemctl daemon-reload

次に、両方のサービスを起動し、次のコマンドを使って自動起動を有効にします:

systemctl enable --now zookeeper
systemctl enable --now kafka
systemctl start zookeeper
systemctl start kafka

次に、以下のコマンドを使用して両方のサービスの状態を確認してください:

systemctl status zookeeper kafka

次の出力が表示されるはずです:

? zookeeper.service - Apache Zookeeper Server
   Loaded: loaded (/etc/systemd/system/zookeeper.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-08-29 08:48:42 EDT; 30s ago
 Main PID: 26722 (java)
    Tasks: 31 (limit: 12523)
   Memory: 68.8M
   CGroup: /system.slice/zookeeper.service
           ??26722 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCIn>

Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,326] INFO maxSessionTimeout set to 60000 (org.apache.zookeeper.>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,327] INFO Created server with tickTime 3000 minSessionTimeout 6>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,344] INFO Using org.apache.zookeeper.server.NIOServerCnxnFactor>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,348] INFO Configuring NIO connection handler with 10s sessionle>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,355] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zook>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,391] INFO zookeeper.snapshotSizeFactor = 0.33 (org.apache.zooke>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,397] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapsho>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,401] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapsho>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,431] INFO Using checkIntervalMs=60000 maxPerMinute=10000 (org.a>
Aug 29 08:48:53 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:53,030] INFO Creating new log file: log.1 (org.apache.zookeeper.se>

? kafka.service - Apache Kafka Server
   Loaded: loaded (/etc/systemd/system/kafka.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-08-29 08:48:50 EDT; 22s ago
     Docs: http://kafka.apache.org/documentation.html
 Main PID: 27100 (java)
    Tasks: 66 (limit: 12523)
   Memory: 306.4M
   CGroup: /system.slice/kafka.service
           ??27100 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancy>

Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,733] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.c>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,747] INFO [ExpirationReaper-0-AlterAcls]: Starting (kafka.server.De>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,846] INFO [/config/changes-event-process-thread]: Starting (kafka.c>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,877] INFO [SocketServer brokerId=0] Starting socket server acceptor>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,236] INFO [SocketServer brokerId=0] Started data-plane acceptor and>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,237] INFO [SocketServer brokerId=0] Started socket server acceptors>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,246] INFO Kafka version: 2.6.0 (org.apache.kafka.common.utils.AppIn>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,246] INFO Kafka commitId: 62abe01bee039651 (org.apache.kafka.common>

CMAKをインストールして構成する

次に、Apache Kafkaクラスタを管理するためにCMAKをインストールする必要があります。以下のコマンドを使用してGitリポジトリからダウンロードできます。

cd /root
git clone https://github.com/yahoo/CMAK.git

ダウンロードが完了したら、application.confファイルを編集し、zookeeperホストを定義する必要があります。

nano ~/CMAK/conf/application.conf

次の行を変更してください:

cmak.zkhosts="localhost:2181"

作業が終わったら、ファイルを保存して閉じてください。その後、アプリケーションを展開するためのzipファイルを作成します。

cd ~/CMAK/
./sbt clean dist

次の出力が表示されるはずです:

model contains 640 documentable templates
[info] Main Scala API documentation successful.
[info] LESS compiling on 1 source(s)
[success] All package validations passed
[info] Your package is ready in /root/CMAK/target/universal/cmak-3.0.0.5.zip
[success] Total time: 150 s (02:30), completed 29-Aug-2020, 8:55:40 AM

次に、前のステップで作成された zip ファイルを次のコマンドで解凍します:

cd ~/CMAK/target/universal
unzip cmak-3.0.0.5.zip

完了したら、次のステップに進むことができます。

CMAKサービスを開始する

今、ディレクトリを~/CMAK/target/universal/cmak-3.0.0.5に変更し、次のコマンドを使用してCMAKサービスを起動します:

cd ~/CMAK/target/universal/cmak-3.0.0.5
bin/cmak

この時点で、CMAKが開始され、ポート9000で待機しています。

SELinuxとファイアウォールを設定する

デフォルトでは、CentOS 8でSELinuxが有効になっています。したがって、CMAKのためにSELinuxを設定する必要があります。次のコマンドで設定できます。

chcon -t httpd_sys_rw_content_t ~/CMAK/target/universal/cmak-3.0.0.5 -R
setsebool -P httpd_can_network_connect 1

次に、firewalldでポート9000を許可する必要があります。次のコマンドで実行できます:

firewall-cmd --permanent --zone public --add-port 9000/tcp
firewall-cmd --reload

完了したら、次のステップに進むことができます。

CMAKウェブUIにアクセスする

今、ウェブブラウザを開き、URL http://your-server-ip:9000 を使用して CMAK にアクセスしてください。次のページが表示されるはずです:

上記の画面では、利用可能なクラスターがないことがわかるはずです。ですから、最初に新しいクラスターを作成する必要があります。

「クラスター」をクリック => 「クラスターを追加」をクリックします。次の画面が表示されるはずです:

クラスタ名、ZooKeeperホスト、その他必要な情報を提供し、保存ボタンをクリックしてください。次の画面が表示されるはずです:

完了したら、次のステップに進むことができます。

Kafkaに最初のトピックを追加する

次に、機能をテストするためにKafkaにトピックを作成する必要があります。そのためには、別のターミナルを開き、ディレクトリをkafka-serverに変更し、以下のコマンドを実行してトピック名とレプリケーションファクターを指定して新しいトピックを作成します:

cd /usr/local/kafka-server
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic MyNewTopic

さて、CMAKダッシュボードに移動し、トピックをクリックしてください。次の画面に、以前に作成したトピックが表示されるはずです:

トピック 番号をクリックしてください。次の画面に新しく作成したトピックが表示されるはずです:

次に、トピック名をクリックしてください。次の画面にトピックに関するすべての情報が表示されるはずです:

結論

おめでとうございます!あなたはCentOS 8サーバーにApache KafkaとCMAKを無事にインストールしました。これでCMAKの機能を探索し始めることができます。質問があれば遠慮なくお尋ねください。

関連記事: