CentOS7安装kafka

根据搜集的资料安装测试并整理的文档,如有不足希望不吝赐教。


目录

1、下载及解压

2、配置(&拷贝)

3、启动测试

4、彻底底删除topic


安装kafka之前确保jdk和zookeeper集群已经在服务器上部署成功。安装方法请自行搜索或者参考:

CentOS7安装JDK

CentOS7安装zookeeper

此处以简单集群为例,单机模式测试请自行搜索。

下文安装以四台机器为例,内网地址为172.17.3.205-208

安装集群时每台服务器配置基本一样,因此可以在每台机器上单独配置,也可以只在一台机器上安装好之后,使用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 kafka

目录结构如下:

 

2、配置(&拷贝)

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

【说明】如果是单机版的话,默认即可,我们什么都不需要改动。现在我们是要配置集群,所以需要配置一些参数:

  • broker.id:每台机器不能一样
  • zookeeper.connect:因为我有4台zookeeper服务器,所以在这里zookeeper.connect设置为4台,必须全部加进去
  • listeners:在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误

另外三台服务器,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

 

3、启动测试

(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

 

4、彻底底删除topic

方法一:快速配置删除法

kafka启动之前,在server.properties配置

delete.topic.enable=true

执行命令

bin/kafka-topics.sh --delete --topic test --zookeeper zk:2181

注意:如果kafka启动之前没有配置delete.topic.enable=truetopic只会标记为marked for deletion,加上配置,重启kafka,之前的topick就真正删除了。

 

方法二:手动删除法(不推荐)

前提:不允许更改server.properties配置

登录zookeeper客户端的命令:

zookeeper/bin/zkCli.sh

找到topic所在的目录:

ls /brokers/topics

找到要删除的topic,执行如下命令即可,此时topic被彻底删除:

rmr /brokers/topics/topic名称

删除时只需要在任意一台机器上执行即可自动同步到其他机器。


END

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值