如何在 Ubuntu 20.04 上安装 Apache Kafka

这篇具有很好参考价值的文章主要介绍了如何在 Ubuntu 20.04 上安装 Apache Kafka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。

如何在 Ubuntu 20.04 上安装 Apache Kafka

介绍

Apache Kafka是一种分布式消息代理,旨在处理大量实时数据。Kafka 集群具有高度可扩展性和容错性。与ActiveMQ和RabbitMQ等其他消息代理相比,它还具有更高的吞吐量。尽管它通常用作发布/订阅消息传递系统,但许多项目也将其用于日志聚合,因为它为已发布的消息提供持久存储。

发布/订阅消息系统允许一个或多个生产者发布消息,而无需考虑消费者的数量或他们将如何处理消息。订阅的客户端会自动收到有关更新和新消息创建的通知。该系统比客户端定期轮询以确定是否有新消息可用的系统更高效且可扩展。

在本文中,我们将在 Ubuntu 20.04 上安装和配置 Apache Kafka 2.8.2。

先决条件

要继续操作,需要:

  • 具有至少 4 GB RAM 和具有sudo权限的非 root 用户的Ubuntu 20.04服务器。如果没有设置非 root 用户,可以按照我的使用 Ubuntu 20.04 进行初始服务器设置进行设置。RAM 小于 4GB 的安装可能会导致 Kafka 服务失败。
  • OpenJDK 11 。Kafka是用Java编写的,因此需要JVM。

第 1 步 — 为 Kafka 创建用户

由于 Kafka 可以通过网络处理请求,因此第一步是为该服务创建专用用户。如果有人破坏 Kafka 服务器,这可以最大限度地减少对 Ubuntu 计算机的损害。在此步骤中创建一个专用kafka的用户。

以非 root的sudo用户身份登录到服务器,然后创建一个名为kafka 的用户:

sudo adduser kafka

按照提示设置密码并创建kafka用户。

接下来,使用命令将kafka用户添加到组中。我们需要这些权限来安装 Kafka 的依赖项:

sudo adduser kafka sudo

现在kafka用户现在已准备就绪。使用以下方式登录帐户:

su -l kafka

现在我们已经创建了 Kafka 特定的用户,可以下载并提取 Kafka 二进制文件了。

第 2 步 — 下载并解压 Kafka 二进制文件

在此步骤中,将下载 Kafka 二进制文件并将其解压到kafka用户主目录中的专用文件夹中。

首先,在/home/kafka创建一个目录Downloads来存储下载:

mkdir ~/Downloads

curl下载 Kafka 二进制文件:

curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o ~/Downloads/kafka.tgz

创建一个名为 kafka的目录并移动到该目录。下来将使用此目录作为 Kafka 安装的基本目录:

mkdir ~/kafka && cd ~/kafka

使用以下命令提取下载的存档:

tar -xvzf ~/Downloads/kafka.tgz --strip 1

指定该--strip 1标志以确保存档的内容是在~/kafka/其自身中提取的,而不是在其中的另一个目录(例如~/kafka/kafka_2.13-2.8.2/)中提取的。

现在已成功下载并提取二进制文件,可以开始配置 Kafka 服务器。

第 3 步 — 配置 Kafka 服务器

Kafka主题是可以发布消息的类别、组或主题名称。但是,Kafka 的默认行为不允许删除主题。要修改此设置,必须编辑配置文件,下来将在此步骤中执行此操作。

Kafka 的配置选项在server.properties 中指定。使用最喜欢的编辑器nano打开此文件:

nano ~/kafka/config/server.properties

首先,添加一个允许删除 Kafka 主题的设置。将以下行添加到文件底部:

〜/ kafka / config / server.properties

delete.topic.enable = true

其次,将通过修改属性来更改存储 Kafka 日志的目录log.dirs。找到该log.dirs属性并将现有路线替换为突出显示的路线:

〜/ kafka / config / server.properties

log.dirs=/home/kafka/logs

保存并关闭文件。

现在我们已经配置了 Kafka,可以创建systemd用于在启动时运行和启用 Kafka 服务器的单元文件。

第 4步 — 创建systemd单元文件并启动 Kafka 服务器

在本部分中,我们将为Kafka 服务创建systemd单元文件。这些文件将帮助我们与其他 Linux 服务一致的方式执行常见的服务操作,例如启动、停止和重新启动 Kafka。

Kafka 使用Zookeeper来管理其集群状态和配置(最新版的可以选择是否是ZK)。它被用于许多分布式系统中,我们可以在官方 Zookeeper 文档中阅读有关该工具的更多信息。下面演示将使用 Zookeper 作为这些单元文件的服务。

创建单元文件zookeeper

sudo nano /etc/systemd/system/zookeeper.service

在文件中输入以下单位定义:

/etc/systemd/system/zookeeper.service

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

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

[Install]
WantedBy=multi-user.target

[Unit]部分指定 Zookeeper 需要网络和文件系统准备好才能启动。

[Service]部分指定systemd应使用zookeeper-server-start.shzookeeper-server-stop.shshell 文件来启动和停止服务。它还指定如果Zookeeper异常退出则应重新启动。

添加此内容后,保存并关闭文件。

接下来,创建kafka systemd 服务文件:

sudo nano /etc/systemd/system/kafka.service

在文件中输入以下单位定义:

/etc/systemd/system/kafka.service

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

[Unit]部分指定该单元文件依赖于zookeeper.service,这将确保在服务启动zookeeper时自动启动kafka

[Service]部分指定systemd应使用kafka-server-start.shkafka-server-stop.shshell 文件来启动和停止服务。它还指定如果Kafka异常退出则应重新启动。

保存并关闭文件。

现在已经定义了单位,使用以下命令启动 Kafka:

sudo systemctl start kafka

要确保服务器已成功启动,请检查该kafka单元的日志日志:

sudo systemctl status kafka

将收到如下输出:

Output● kafka.service
     Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset>
     Active: active (running) since Wed 2023-02-01 23:44:12 UTC; 4s ago
   Main PID: 17770 (sh)
      Tasks: 69 (limit: 4677)
     Memory: 321.9M
     CGroup: /system.slice/kafka.service
             ├─17770 /bin/sh -c /home/kafka/kafka/bin/kafka-server-start.sh /ho>
             └─17793 java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMill>

现在有一个 Kafka 服务器正在侦听端口9092,这是 Kafka 服务器使用的默认端口。

现在已启动该kafka服务。但是如果要重新启动服务器,Kafka将不会自动重新启动。要在服务器启动时启用该kafka服务,请运行以下命令:

sudo systemctl enable zookeeper

将收到已创建符号链接的响应:

OutputCreated symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.

然后运行这个命令:

sudo systemctl enable kafka

将收到已创建符号链接的响应:

OutputCreated symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.

在此步骤中,我们启动并启用了kafkazookeeper服务。在下一步中,将检查 Kafka 安装。

第 5 步 — 测试 Kafka 安装

在此步骤中,将测试 Kafka 安装。我们将发布并使用一条Hello World消息,以确保 Kafka 服务器按预期运行。

在 Kafka 中发布消息需要:

  • 生产者*,*能够将记录和数据发布到主题。
  • 消费者,从主题读取消息和数据。

首先,创建一个名为TutorialTopic 的主题:

~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic

我们使用脚本从命令行创建生产者kafka-console-producer.sh。它需要 Kafka 服务器的主机名、端口和主题作为参数。

将收到主题已创建的响应:

OutputCreated topic TutorialTopic.

现在将字符串发布"Hello, World"TutorialTopic主题:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

接下来,使用该脚本创建一个 Kafka 消费者kafka-console-consumer.sh。它需要 ZooKeeper 服务器的主机名和端口以及主题名称作为参数。以下命令使用来自TutorialTopic 的消息。请注意该标志的使用--from-beginning,它允许消费在消费者启动之前发布的消息:

~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning

如果没有配置问题,将Hello, World在终端中收到响应:

OutputHello, World

该脚本将继续运行,等待更多消息发布。要对此进行测试,请打开一个新的终端窗口并登录到您的服务器。请记住以你的用户身份登录kafka

su -l kafka

在这个新终端中,启动生产者来发布第二条消息:

echo "Hello World from Sammy at DigitalOcean!" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

此消息将加载到原始终端中消费者的输出中:

OutputHello, World
Hello World from Sammy at DigitalOcean!

完成测试后,按CTRL+C停止原始终端中的消费者脚本。

到此现在已经在 Ubuntu 20.04 上安装并配置了 Kafka 服务器。在下一步中,我们将执行一些快速任务来强化 Kafka 服务器的安全性。

第 6 步 — 强化 Kafka 服务器

安装完成后,可以删除kafka用户的管理权限并强化 Kafka 服务器。

执行此操作之前,请注销并以任何其他非 rootsudo用户身份重新登录。如果仍在运行开始本教程时使用的同一个 shell 会话,请输入exit

从 sudo 组中删除用户kafka

sudo deluser kafka sudo

为了进一步提高 Kafka 服务器的安全性,请使用该命令锁定用户的密码passwd。此操作可确保任何人都无法使用此帐户直接登录服务器:

sudo passwd kafka -l

-l标志锁定更改用户密码的命令 ( passwd)。

此时,只有一个root或一个用户可以使用以下命令sudo登录:

sudo su - kafka

将来,如果想解锁更改密码的功能,请使用passwd下的-u选项:

sudo passwd kafka -u

现在已成功限制kafka用户的管理员权限。现在可以选择执行下一步,这会将 Kafka 添加到你的系统中。

第 7 步 — 安装 KafkaT(可选)

开发KafkaT 的目的是提高查看 Kafka 集群详细信息以及从命令行执行某些管理任务的能力。需要 Ruby 才能使用它。还需要build-essential包来构建其它所需依赖。

build-essential使用以下命令安装 Ruby 和软件包:

sudo apt install ruby ruby-dev build-essential

现在可以使用以下命令安装 KafkaT :

sudo CFLAGS=-Wno-error=format-overflow gem install kafkat

Wno-error=format-overflow需要编译标志来抑制 Zookeeper 在安装过程中的警告和错误。

安装完成后,将收到安装完成的响应:

Output...
Done installing documentation for json, colored, retryable, highline, trollop, zookeeper, zk, kafkat after 3 seconds
8 gems installed

KafkaT用作.kafkatcfg配置文件来确定Kafka服务器的安装和日志目录。它还应该有一个将 KafkaT 指向我们的 ZooKeeper 实例的条目。

创建一个名为的新文件.kafkatcfg

nano ~/.kafkatcfg

添加以下行以指定有关 Kafka 服务器和 Zookeeper 实例的所需信息:

〜/.kafkatcfg

{
  "kafka_path": "~/kafka",
  "log_path": "/home/kafka/logs",
  "zk_path": "localhost:2181"
}

保存并关闭文件。

要查看有关所有 Kafka 分区的详细信息,请尝试运行以下命令:

kafkat partitions

将收到以下输出:

Output[DEPRECATION] The trollop gem has been renamed to optimist and will no longer be supported. Please switch to optimist as soon as possible.
/var/lib/gems/2.7.0/gems/json-1.8.6/lib/json/common.rb:155: warning: Using the last argument as keyword parameters is deprecated
...
Topic                 Partition   Leader      Replicas        ISRs
TutorialTopic         0             0         [0]             [0]
__consumer_offsets	  0		          0		      [0]							[0]
...
...

输出将包括TutorialTopic__consumer_offsets,这是 Kafka 用于存储客户端相关信息的内部主题。可以安全地忽略以 __consumer_offsets开头的行。

要了解有关 KafkaT 的更多信息,请参阅其GitHub 存储库。

结论

现在,Apache Kafka 在 Ubuntu 服务器上安全运行。文章来源地址https://www.toymoban.com/news/detail-790211.html

到了这里,关于如何在 Ubuntu 20.04 上安装 Apache Kafka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux学习之Ubuntu 20.04安装内核模块

    参考博客:Ubuntu20.04编译内核教程 sudo lsb_release -a 可以看到我当前的系统是 Ubuntu 20.04.4 , sudo uname -r 可以看到我的系统内核版本是 5.4.0-100-generic 。 sudo apt-get install -y libncurses5-dev flex bison libssl-dev 安装所需要的依赖。 sudo apt-get install linux-source 按两下 Tab ,看一下可以下载的源

    2024年02月15日
    浏览(84)
  • 如何在Ubuntu 20.04|18.04上安装 FreeSwitch

    PBX 是 Private Branch Exchange 的缩写。它是在组织内部使用的专用电话系统,并根据特定组织的需求进行定制。组织中的 PBX 用户可以在内部进行内部通信,也可以与外界进行外部通信。VoIP(IP 语音)、ISDN(综合业务数字网络)或模拟等渠道促进了外部通信。 使用 PBX 电话系统的

    2024年02月09日
    浏览(79)
  • 如何在ubuntu20.04安装中文输入法

             在 Ubuntu 20.04 上安装中文输入法有许多选择,以下是其中两种最常用的方法: 打开终端,并执行以下命令以安装 Fcitx 框架和相应的中文输入法: 安装完成后,打开“Settings”(设置)应用程序,然后选择“Region Language”(区域和语言)选项卡。 在“Input Sources”

    2024年02月05日
    浏览(64)
  • Ubuntu20.04(linux)安装JDK1.8

    Ubuntu20.04安装JDK1.8 1.下载 : jdk-8u371-linux-x64.tar.gz 2.解压到指定目录 3.在/usr/lib/ 创建 jvm 文件夹,并将解压的jdk移动到/usr/lib/jvm(非root用户使用sudo) 4.打开/etc/profile,配置环境变量 vi /etc/profile(编辑文件) Shift + g 将光标定位到行尾 这个时候按一下 Insert 键,进入编辑模式 按Esc键 输

    2024年02月12日
    浏览(73)
  • 如何在 Ubuntu 20.04 上安装和使用 Docker

    前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 Docker是一个可以简化 容器 中应用程序进程管理过程的应用程序。容器允许你在资源隔离的进程中运行应用程序。它们与虚拟机类似,但容器更可

    2024年01月17日
    浏览(47)
  • ubuntu20.04如何安装nvidia-docker?

    导入 NVIDIA GPG 密钥 添加 NVIDIA Docker 存储库 安装 nvidia-container-toolkit 检查nvidia-docker是否安装成功 如果 nvidia-docker 安装成功,命令将启动一个包含 NVIDIA GPU 的容器并运行 nvidia-smi 命令,该命令可以显示有关 GPU 状态的信息。输出结果将显示 GPU 型号、显存大小、温度等信息。 如

    2024年02月15日
    浏览(50)
  • Linux(7)Ubuntu20.04 arm64安装Docker

    vi /etc/apt/sources.list 这个命令后面跟了几个软件包的名字,它们分别是: apt-transport-https:这个软件包允许apt使用HTTPS协议来访问软件源。 ca-certificates:这个软件包提供了一些受信任的证书颁发机构的证书,用来验证HTTPS连接的安全性。 curl:这个软件包提供了一个命令行工具,

    2024年02月10日
    浏览(62)
  • Linux学习之Ubuntu 20.04安装5.4.0内核

    参考博客:Ubuntu20.04编译内核教程 sudo lsb_release -a 可以看到我当前的系统是 Ubuntu 20.04.4 , sudo uname -r 可以看到我的系统内核版本是 5.4.0-100-generic 。 sudo apt-get install -y libncurses5-dev flex bison libssl-dev 安装所需要的依赖。 sudo apt-get install linux-source 按两下 Tab ,看一下可以下载的源

    2024年02月06日
    浏览(47)
  • ROS Neotic(Ubuntu 20.04)如何正确安装OpenCV

    鱼香ROS提供了一个全面且方便的脚本,可以直接运行来安装系统对应版本的ROS,同时也可以使用该命令来安装许多有趣的东西 本文安装的为无contrib版本的OpenCV GitHub OpenCV 项目地址 在源代码的目录下依次执行上方的命令,第四步cmake的过程中可以增加相关的参数来自定义Open

    2024年02月05日
    浏览(44)
  • 【WSL】使用WSL在Windows上安装Linux(Ubuntu20.04)

    本文将介绍在win11系统下使用Windows自带的WSL功能安装Ubuntu20.04子系统,其中WSL2本质仍是基于Hyper-V的虚拟机。 Windows11 + WSL2 + Ubuntu20.04 (WSL译为适用于 Linux 的 Windows 子系统) 在Windows设置中添加可选功能,勾选 适用于Linux的Windows子系统(即WSL) 和 虚拟机平台 ,开启该功能需重

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包