赞
踩
根据搜集的资料安装测试并整理的文档,如有不足希望不吝赐教。
目录
安装kafka之前确保jdk和zookeeper集群已经在服务器上部署成功。安装方法请自行搜索或者参考:
此处以简单集群为例,单机模式测试请自行搜索。
下文安装以四台机器为例,内网地址为172.17.3.205-208。
安装集群时每台服务器配置基本一样,因此可以在每台机器上单独配置,也可以只在一台机器上安装好之后,使用scp命令,将文件夹拷贝到其他服务器,修改差异部分即可。
下载地址:http://mirrors.hust.edu.cn/apache/kafka/
下载方法与zookeeper类似,以curl为例:
curl -O http://mirrors.hust.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz
下载完成后解压下载的文件到指定的目录,此处解压的位置为/usr/local目录:
tar zxf kafka_2.11-1.1.0.tgz -C /usr/local
解压完修改目录名(非必须):
mv kafka_2.11-1.1.0 kafka
目录结构如下:
kafka的配置文件为kafka/config/ server.properties,使用vim命令编辑配置文件:
vim config/server.properties
在配置文件中找到以下两行并注释掉(在文本前加#)如图::
#broker.id=0
#zookeeper.connect=localhost:2181
然后在文件的底部添加如下三个配置(以172.17.3.205为例,其余看下文):
broker.id=1
zookeeper.connect=172.17.3.205:2181,172.17.3.206:2181,172.17.3.207:2181,172.17.3.208:2181
listeners = PLAINTEXT://172.17.3.205:9092
【说明】如果是单机版的话,默认即可,我们什么都不需要改动。现在我们是要配置集群,所以需要配置一些参数:
另外三台服务器,zookeeper.connect的配置跟这里的一样,但是broker.id和listeners不能一样。
一台配置完成后,如果是在一台机器配置需要使用scp命令将目录拷贝到其他机器,如果分别配置则可以跳过本步。以从172.17.3.205拷贝到172.17.3.206为例,在172.17.3.205上执行scp命令如下(其余参考即可):
scp -r /usr/local/kafka root@172.17.3.206:/usr/local/
其他机器需要修改的配置项如下:
172.17.3.206
broker.id=2
zookeeper.connect=172.17.3.205:2181,172.17.3.206:2181,172.17.3.207:2181,172.17.3.208:2181
listeners = PLAINTEXT://172.17.3.206:9092
172.17.3.207
broker.id=3
zookeeper.connect=172.17.3.205:2181,172.17.3.206:2181,172.17.3.207:2181,172.17.3.208:2181
listeners = PLAINTEXT://172.17.3.207:9092
172.17.3.208
broker.id=4
zookeeper.connect=172.17.3.205:2181,172.17.3.206:2181,172.17.3.207:2181,172.17.3.208:2181
listeners = PLAINTEXT://172.17.3.208:9092
(1)启动
启动之前需要开启相关的端口,每台机器都要开启。kafka通信默认是通过9092端口,也就是我们上面配的listeners。
- firewall-cmd --zone=public --add-port=9092/tcp --permanent
-
- firewall-cmd --reload
或者直接关闭防火墙(参考:CentOS7安装zookeeper)。
启动zookeeper,参考:CentOS7安装zookeeper。已经启动忽略
启动kafka
全部机器都要启动,命令(在/usr/local/kafka/目录执行,其他位置做相应修改):
bin/kafka-server-start.sh -daemon config/server.properties
使用jps命令检查是否启动成功,如图表示启动成功:
关闭:如果bin目录中stop脚本不能关闭,则可以使用:
jps -l | grep 'kafka\.Kafka'
查看kafka进程id,然后使用 kill -9 id 直接关闭kafka进程。
(2)测试
创建topic(在172.17.3.205服务器/usr/local/kafka/目录执行,其他位置做相应修改)
bin/kafka-topics.sh --create --zookeeper 172.17.3.205:2181 --replication-factor 1 --partitions 1 --topic test
如果成功的话,会输出:Created topic "test".
查看topic
虽然在172.17.3.205上创建的topic,但是其他机器上也能看到。例如在任意启动的机器上/usr/local/kafka/目录执行命令:
bin/kafka-topics.sh --list --zookeeper 172.17.3.207:2181
这里的ip可以是205-207任意一台机器ip。因为在测试zk时手动关闭了208机器上的zk用来查看是否成功重新选举leader,所以208上的zk没有启动,因此查询ip如果为208会报错。一下截图为在208测试查询topic的截图:
peoducer和consumer测试略,以下为方法。
创建发布
在172.17.3.205上执行创建
bin/kafka-console-producer.sh --broker-list 172.17.3.205:9092 --topic test
创建消费
在172.17.3.206上执行消费
bin/kafka-console-consumer.sh --bootstrap-server 172.17.3.206:9092 --topic test --from-beginning
方法一:快速配置删除法
kafka启动之前,在server.properties配置
delete.topic.enable=true
执行命令
bin/kafka-topics.sh --delete --topic test --zookeeper zk:2181
注意:如果kafka启动之前没有配置delete.topic.enable=true,topic只会标记为marked for deletion,加上配置,重启kafka,之前的topick就真正删除了。
方法二:手动删除法(不推荐)
前提:不允许更改server.properties配置
登录zookeeper客户端的命令:
zookeeper/bin/zkCli.sh
找到topic所在的目录:
ls /brokers/topics
找到要删除的topic,执行如下命令即可,此时topic被彻底删除:
rmr /brokers/topics/topic名称
删除时只需要在任意一台机器上执行即可自动同步到其他机器。
END
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。