目录
1、下载及解压
2、配置(&拷贝)
3、启动测试
4、彻底底删除topic
安装kafka之前确保jdk和zookeeper集群已经在服务器上部署成功。安装方法请自行搜索或者参考:
CentOS7安装JDK
CentOS7安装zookeeper
此处以简单集群为例,单机模式测试请自行搜索。
下文安装以三台机器为例,内网地址为192.168.159.128-130
安装集群时每台服务器配置基本一样,因此可以在每台机器上单独配置,也可以只在一台机器上安装好之后,使用scp命令,将文件夹拷贝到其他服务器,修改差异部分即可。
1、下载及解压
下载地址: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.tgz kafka
2、配置(&拷贝)
以192.168.159.128服务器为例:
kafka的配置文件为kafka/config/ server.properties,使用vim命令编辑配置文件:
vim config/server.properties
一次修改如下三处:
broker.id=1
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
listeners = PLAINTEXT://192.168.159.128:9092
【ps】如果是单机版的话,默认即可,我们什么都不需要改动。现在我们是要配置集群,所以需要配置一些参数:
broker.id:每台机器不能一样
zookeeper.connect:因为我有3台zookeeper服务器,所以在这里zookeeper.connect设置为3台,必须全部加进去
listeners:在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误
另外三台服务器,zookeeper.connect的配置跟这里的一样,但是broker.id和listeners不能一样。
一台配置完成后,如果是在一台机器配置需要使用scp命令将目录拷贝到其他机器,如果分别配置则可以跳过本步。以从192.168.159.128拷贝到192.168.159.129为例,在192.168.159.128上执行scp命令如下(其余参考即可):
scp -r /usr/local/kafka root@192.168.159.129:/usr/local/
其他机器需要修改的配置项如下:
192.168.159.129
broker.id=2
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
listeners = PLAINTEXT://192.168.159.129:9092
192.168.159.130
broker.id=3
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
listeners = PLAINTEXT://192.168.159.130:9092
3、启动测试
(1)启动
启动之前需要开启相关的端口,每台机器都要开启。kafka通信默认是通过9092端口,也就是我们上面配的listeners。
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --reload
或者直接关闭防火墙。
启动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 192.168.159.128:2181 --replication-factor 1 --partitions 1 --topic test
如果成功的话,会输出:Created topic "test".
查看topic
虽然在192.168.159.128上创建的topic,但是其他机器上也能看到。例如在任意启动的机器上/usr/local/kafka/目录执行命令:
bin/kafka-topics.sh --list --zookeeper 192.168.159.129:2181
这里的ip可以是128-130任意一台机器ip。
peoducer和consumer测试略,以下为方法。
创建发布
在192.168.159.128上执行创建
bin/kafka-console-producer.sh --broker-list 192.168.159.128:9092 --topic test
创建消费
在192.168.159.129上执行消费
bin/kafka-console-consumer.sh --bootstrap-server 192.168.159.129:9092 --topic test --from-beginning
4、彻底底删除topic
方法一:快速配置删除法
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名称
删除时只需要在任意一台机器上执行即可自动同步到其他机器。