目录

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名称
删除时只需要在任意一台机器上执行即可自动同步到其他机器。