如何在 Ubuntu 14.04 上安装 Apache Kafka

介绍

Apache Kafka是一个流行的分布式消息经纪商,旨在高效地处理大量的实时数据。卡夫卡集群不仅高度可扩展和耐错误,而且与其他消息经纪商如ActiveMQ和RabbitMQ相比,其传输量也更高。

在本教程中,您将学习如何在Ubuntu 14.04上安装和使用Apache Kafka 0.8.2.1。

前提条件

要跟上,你需要:

步骤 1 — 为 Kafka 创建用户

因为卡夫卡可以通过网络处理请求,所以你应该为它创建一个专用用户,这样就最小化了对你的Ubuntu机器的损害,如果卡夫卡服务器被组成。

<$>[注] 注: 在设置Apache Kafka后,建议您创建一个不同的非根用户,以便在该服务器上执行其他任务。

作为 root,使用useradd命令创建一个名为 kafka 的用户:

1useradd kafka -m

使用passwd设置密码:

1passwd kafka

将它添加到sudo组,以便它具有安装卡夫卡依赖的权限。

1adduser kafka sudo

您的 Kafka 用户已经准备好了. 使用su登录:

1su - kafka

第2步:安装Java

在安装附加包之前,请更新可用的包列表,以便您安装存储库中可用的最新版本:

1sudo apt-get update

由于Apache Kafka需要一个Java运行环境,请使用apt-get来安装默认jre包:

1sudo apt-get install default-jre

步骤 3 – 安装 ZooKeeper

Apache ZooKeeper 是一个开源服务,用于协调和同步属于分布式系统节点的配置信息。

由于ZooKeeper包在Ubuntu的默认存储库中可用,请使用apt-get安装。

1sudo apt-get install zookeeperd

安装完毕后,ZooKeeper 将自动启动作为一个 DAEMON. 默认情况下,它将听到端口 2181

要确保它工作,请通过Telnet连接到它:

1telnet localhost 2181

在 Telnet 提示中,键入ruok并按ENTER

如果一切顺利,ZooKeeper会说imok,并结束Telnet会话。

步骤 4 – 下载和提取卡夫卡二进制

现在安装了Java和ZooKeeper,是时候下载和提取Kafka了。

首先,创建一个名为下载的目录,存储所有下载。

1mkdir -p ~/Downloads

使用wget下载卡夫卡二进制。

1wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz

创建一个名为kafka的目录,并切换到这个目录,这将是 Kafka 安装的基本目录。

1mkdir -p ~/kafka && cd ~/kafka

使用tar命令提取您下载的档案。

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

第5步:设置卡夫卡服务器

下一步是配置Kakfa服务器。

使用vi打开server.properties:

1vi ~/kafka/config/server.properties

默认情况下,Kafka 不允许您删除主题. 若要删除主题,请在文件末尾添加下列行:

1[label ~/kafka/config/server.properties]
2delete.topic.enable = true

保存文件,然后输出vi

第6步:启动卡夫卡服务器

使用nohup运行kafka-server-start.sh脚本,以启动Kafka服务器(也称为Kafka经纪人)作为一个独立于您的壳会话的背景过程。

1nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &

您可以确信服务器已成功启动,当您在 `~/kafka/kafka.log 中看到以下消息时:

1[label excerpt from ~/kafka/kafka.log]
2
3...
4
5[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
6[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

你现在有一个 Kafka 服务器,在端口 9092 上聆听。

步骤7:测试安装

现在让我们发布和消耗一个 Hello World 消息,以确保卡夫卡服务器的行为正确。

要发布消息,你应该创建一个Kafka制作者. 您可以轻松地使用kafka-console-producer.sh脚本从命令行创建一个Kafka制作者. 它预计Kafka服务器的主机名和端口,以及主题名作为其参数。

将字符串 Hello, World 发布到名为 ** TutorialTopic** 的主题,键入以下内容:

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

由于主题不存在,卡夫卡会自动创建它。

要消耗消息,您可以使用kafka-console-consumer.sh脚本创建一个Kafka消费者,它预计ZooKeeper服务器的主机名称和端口,以及主题名称作为其参数。

注意使用从开始旗帜,这是因为我们想要消耗在消费者开始之前发布的消息。

1~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

如果没有配置问题,你应该看到你好,世界现在的输出。

脚本将继续运行,等待更多消息发布到主题. 请自由打开一个新的终端,并开始一个生产者发布一些更多消息. 您应该能够立即在消费者输出中看到它们。

当您完成测试时,请按 CTRL + C 来停止消费者脚本。

步骤 8 — 安装 KafkaT (可选)

KafkaT是Airbnb的一個方便的小工具,讓您更容易查看卡夫卡集群的細節,並且從命令行中執行一些管理任務。 由於它是一個Ruby寶石,您將需要Ruby來使用它。

1sudo apt-get install ruby ruby-dev build-essential

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

1sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

使用vi创建一个名为.kafkatcfg的新文件。

1vi ~/.kafkatcfg

这是一个配置文件,KafkaT 使用它来确定您的Kafka服务器的安装和日志目录。它也应该将KafkaT指向您的ZooKeeper实例。

1[label ~/.kafkatcfg]
2{
3  "kafka_path": "~/kafka",
4  "log_path": "/tmp/kafka-logs",
5  "zk_path": "localhost:2181"
6}

您现在已经准备好使用 KafkaT. 首先,这里是如何使用它来查看所有 Kafka 分区的详细信息:

1kafkat partitions

你应该看到以下结果:

1[label output of kafkat partitions]
2Topic		    Partition	Leader		Replicas		ISRs	
3TutorialTopic	0		      0		      [0]			[0]

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

步骤 9 — 设置多节点集群(可选)

如果你想使用更多的 Ubuntu 14.04 机器创建一个多经纪人群,你应该在每个新机器上重复步骤 1,步骤 3,步骤 4 和步骤 5. 此外,你应该在每个机器中对 server.properties 文件进行以下更改:

  • broker.id 属性的值应该被更改,以便在整个集群中是唯一的
  • 该属性的值应该被更改,以便所有节点都指向相同的 ZooKeeper instance

如果您想为您的集群拥有多个 ZooKeeper 实例,则每个节点上的zookeeper.connect属性值应该是列出所有 ZooKeeper 实例的 IP 地址和端口号的相同、单元格分离的字符串。

第10步:限制卡夫卡用户

现在所有安装都完成了,您可以删除kafka用户的管理权限。在您这样做之前,请退出并作为其他非 root sudo 用户重新登录。

要删除kafka用户的管理权限,请从sudo组中删除它。

1sudo deluser kafka sudo

为了进一步提高卡夫卡服务器的安全性,使用passwd命令锁定kafka用户的密码,这样就确保没有人可以直接登录。

1sudo passwd kafka -l

在此时,只有 root 或 sudo 用户可以通过键入以下命令作为kafka登录:

1sudo su - kafka

在未来,如果你想解锁它,使用passwd-u选项:

1sudo passwd kafka -u

结论

你现在有一个安全的Apache Kafka在你的Ubuntu服务器上运行。你可以轻松地利用它在你的项目中,通过使用可用于大多数编程语言的Kafka客户端(https://cwiki.apache.org/confluence/display/KAFKA/Clients# Clients-For0.8.x)创建Kafka的生产者和消费者。

Published At
Categories with 技术
comments powered by Disqus