介绍
Apache的卡夫卡是一个流行的分布式消息代理旨在有效地处理大量的实时数据。卡夫卡集群不仅是高度可扩展和容错性,但它也具有更高的吞吐量相比其他消息代理如的ActiveMQ和RabbitMQ的。虽然它通常被用作发布/订阅的邮件系统,很多的组织,因为它提供了发布的消息持久性存储也用它进行日志聚合。
在本教程中,您将学习如何安装和在Ubuntu 14.04使用Apache卡夫卡0.8.2.1。
先决条件
跟着一起,你将需要:
- Ubuntu的14.04液滴
- 至少有4GB的交换空间
第1步 - 创建卡夫卡用户
正如卡夫卡可以通过网络处理请求,就应该为它创建一个专用的用户。这最大限度地减少你的Ubuntu机器损坏应卡夫卡服务器组成。
注意:设置Apache卡夫卡之后,建议您创建一个不同的非root用户在此服务器上执行其他任务。
作为root,创建一个叫做用户卡夫卡使用useradd
命令:
useradd kafka -m
设置使用它的密码passwd
:
passwd kafka
它添加到sudo
组,以便它具有安装卡夫卡依赖所需的特权。这可以通过使用来完成adduser
的命令:
adduser kafka sudo
你卡夫卡的用户现在已经准备好了。登录到它使用su
:
su - kafka
第2步 - 安装Java
在安装额外的软件包,更新可用的软件包列表,所以你要安装在存储库中的最新版本:
sudo apt-get update
作为Apache的卡夫卡需要Java运行时环境中,使用apt-get
安装default-jre
包:
sudo apt-get install default-jre
第3步 - 安装的ZooKeeper
阿帕奇动物园管理员是内置协调和同步属于一个分布式系统中的节点的配置信息的开源服务。卡夫卡集群取决于ZooKeeper的其他东西的操作如检测失败的节点和选举领导人之间进行,。
由于ZooKeeper的包是在Ubuntu的默认软件仓库,使用安装它apt-get
。
sudo apt-get install zookeeperd
安装完成后,动物园管理员将自动启动一个守护进程。默认情况下,它会侦听端口2181。
为了确保它是工作,通过Telnet连接到它:
telnet localhost 2181
在Telnet提示符处,键入ruok
并按ENTER
。
如果一切正常,动物园管理员会说imok
并结束Telnet会话。
第4步 - 下载并解压缩二进制卡夫卡
现在,Java和动物园管理员安装,现在是时候下载并解压卡夫卡。
首先,创建一个名为目录Downloads
来存储所有您的下载。
mkdir -p ~/Downloads
使用wget
下载卡夫卡二进制文件。
wget "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
并切换到该目录。这将是卡夫卡安装的基本目录。
mkdir -p ~/kafka && cd ~/kafka
解压缩您下载使用存档tar
命令。
tar -xvzf ~/Downloads/kafka.tgz --strip 1
第5步 - 配置卡夫卡服务器
下一步骤是配置Kakfa服务器。
打开server.properties
使用vi
:
vi ~/kafka/config/server.properties
默认情况下,卡夫卡不允许你删除的主题。为了能够删除主题,添加以下线在文件的结尾:
〜/卡夫卡/配置/ server.properties
delete.topic.enable = true
保存文件,并退出vi
。
第6步 - 启动卡夫卡服务器
运行kafka-server-start.sh
使用脚本nohup
来启动卡夫卡服务器(也称为卡夫卡经纪人)作为后台进程是独立的shell会话。
nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &
等待几秒钟,它开始。你可以肯定,当你看到以下消息服务器已成功启动~/kafka/kafka.log
:
摘自〜/卡夫卡/ kafka.log
...
[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)
你现在有它端口侦听卡夫卡服务器9092。
第7步 - 测试安装
现在让我们发布和使用一个“Hello World”的消息,以确保卡夫卡服务器正常运作。
要发布的消息,你应该创建一个卡夫卡生产商。您可以轻松地创建一个使用的命令行kafka-console-producer.sh
脚本。据预计,卡夫卡服务器的主机名和端口,与一个主题名称作为它的参数一起。
发布字符串“你好,世界”到一个叫做主题TutorialTopic通过在下列输入:
echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null
由于主题不存在,卡夫卡会自动创建它。
使用消息,您可以创建使用卡夫卡消费者kafka-console-consumer.sh
脚本。它预计的ZooKeeper服务器的主机名和端口,与一个主题名称作为它的参数一起。
下面的命令从我们发布到该主题消费消息。注意使用的--from-beginning
标志,因为我们要消耗消费者开始之前公布的消息,其存在。
~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning
如果没有配置问题,你应该看到Hello, World
在输出了。
该脚本将继续运行,等待更多的消息发布到的话题。随意打开一个新的终端,并开始生产商发布了一些更多的消息。你应该能够看到他们都在消费者的输出瞬间。
当您完成测试后,按CTRL + C停止消费脚本。
第8步 - 安装KafkaT(可选)
KafkaT是从制作的Airbnb一个方便的小工具,这使得它更容易为你查看关于卡夫卡集群详细信息,并在命令行中执行一些管理任务。由于这是一个Ruby宝石,还需要Ruby使用它。您还需要build-essential
包能够建立这取决于其他宝石。使用安装它们apt-get
:
sudo apt-get install ruby ruby-dev build-essential
现在,您可以使用安装KafkaT gem
命令:
sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc
使用vi
创建一个名为新文件.kafkatcfg
。
vi ~/.kafkatcfg
这是KafkaT用来确定安装和记录您的卡夫卡服务器的目录中的配置文件。还应该指出KafkaT您的ZooKeeper实例。因此,添加以下行吧:
〜/ .kafkatcfg
{
"kafka_path": "~/kafka",
"log_path": "/tmp/kafka-logs",
"zk_path": "localhost:2181"
}
您现在可以使用KafkaT。首先,这里是你将如何使用它来查看所有卡夫卡分区的详细信息:
kafkat partitions
您应该看到下面的输出:
kafkat分区输出
Topic Partition Leader Replicas ISRs
TutorialTopic 0 0 [0] [0]
要了解更多关于KafkaT,请参阅其GitHub的信息库。
第9步 - 设置多节点集群(可选)
如果你想使用更多的Ubuntu 14.04机器上创建一个多代理群集,你应该重复步骤1,步骤3,步骤4和每个新机器第5步。此外,你应该做下列变化server.properties
在他们每个人的文件:
- 该值
broker.id
属性应该被改变,使得它在整个群集中是唯一 - 该值
zookeeper.connect
属性应该改变,以使得所有节点指向同一个实例的ZooKeeper
如果你想为你的集群中的多个ZooKeeper的情况下,价值zookeeper.connect
每个节点上的属性应该是相同的,逗号分隔的字符串,列出所有的ZooKeeper实例的IP地址和端口号。
第10步 - 限制用户卡夫卡
现在,所有安装完成后,可以删除kafka
用户的管理员权限。这样做之前,注销并重新登录任何其他非root用户sudo的。如果你还在使用你开始这个教程同样的shell会话,只需键入exit
。
要删除kafka
用户的管理员权限,从删除sudo
组。
sudo deluser kafka sudo
为了进一步提高您的卡夫卡服务器的安全,锁定kafka
使用用户的密码passwd
命令。这将确保没有人可以直接登录到它。
sudo passwd kafka -l
在这一点上,只有root或sudo的用户可以登录如kafka
通过下面的命令输入:
sudo su - kafka
在未来,如果你想解锁,使用passwd
的-u
选项:
sudo passwd kafka -u
结论
你现在有你的Ubuntu服务器上运行安全的Apache卡夫卡。您可以轻松地创建使用卡夫卡生产者和消费者做出在项目中使用它卡夫卡客户这是适用于大多数编程语言。要了解更多关于卡夫卡,都通过其文档。