Rocky Linux 8 安装 Apache Kafka

Apache Kafka 是一个开源流处理和消息代理软件应用程序,允许我们通过分布式流平台处理数据流。 它充当发件人和收件人之间的消息传递系统。 Apache Kafka 基于分布式架构,因此提供了高容错性和可扩展性能力。 它最初是由 LinkedIn 开发的,但现在它是 Apache Software Foundation 的一个项目。 Apache Kafka 提供了一个接口来读取和写入 Kafka 集群的数据,或者将数据导入和导出到第三方系统和从第三方系统导出数据。

在这篇文章中,我们将解释 Rocky Linux 8 上安装 Apache Kafka。

先决条件

  • 在 云平台上运行 RockyLinux 8 的服务器
  • 在我们的服务器上配置的 root 密码

第 1 步 – 创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择 Rocky Linux 8 作为至少 2GB RAM 的操作系统。 通过 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 步 – 在 Rocky Linux 8 上安装 Apache Kafka

首先,到 Apache 官网,使用 wget 命令下载最新版本的 Apache Kafka:

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 服务文件

对于生产环境,建议创建一个systemd服务文件,在后台同时运行Zookeeper和Kafka。

首先,使用以下命令为 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,我们需要在服务器上至少创建一个主题。

将目录更改为 Apache Kafka 并使用以下命令创建一个名为 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 提供了两个 API:Producer 和 Consumer。 生产者负责创建事件,消费者将它们显示在屏幕上:

首先,运行以下命令以使用以下命令创建名为 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 Linux 8 上安装 Apache Kafka。有关更多信息,我们可以访问 Apache Kafka 文档页面。 从 开始在 VPS 托管上使用 Apache Kafka!

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论