centos-7部署kafka-v2.13.3.0.1集群
1、部署测试机器规划
ip | kafka 版本 | zookeeper 版本 |
192.168.113.132 | v2.13.3.0.1 | v3.6.3 |
192.168.113.135 | v2.13.3.0.1 | v3.6.3 |
192.168.113.136 | v2.13.3.0.1 | v3.6.3 |
kafka下载官网:https://kafka.apache.org/downloads.html
[root@localhost ~]# cd /opt/ #计划安装kafka的位置
[root@localhost opt]# wget https://archive.apache.org/dist/kafka/3.0.1/kafka_2.13-3.0.1.tgz #下载包
[root@localhost opt]# tar xf kafka_2.13-3.0.1.tgz #解压
[root@localhost opt]# mv kafka_2.13-3.0.1/ kafka #重命名
[root@localhost opt]# ls kafka/libs/ #查看kfaka的包名查看zk的版本,如果不使用kafka包里面自带的zk服务,自己搭建的话,最好下载对应版本的zk
zookeeper下载官网:http://zookeeper.apache.org/
下载二进制包
每台节点执行操作
[root@localhost ~]# cd /opt/
[root@localhost opt]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz --no-check-certificate
[root@localhost opt]# tar xf apache-zookeeper-3.6.3-bin.tar.gz
[root@localhost opt]# mv apache-zookeeper-3.6.3-bin zookeeper
2、使用二进制安装zookeeper集群
应用场景:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等
kafka需要使用zookeeper来进行调度所以首先安装,也可以不单独安装直接使用kafka包里面的zookeeper进行配置启动,但是建议单独安装
2.1、前面已经将包下载好并解压重命名了,接下来进行配置zookeeper
没安装jdk的先安装jdk,我这里是yum安装的也可以下载二进制包进行
[root@localhost conf]# yum -y install java-1.8.0-openjdk*
对每台节点进行操作
[root@localhost opt]# cd zookeeper/conf/ #切换目录
[root@localhost conf]# ls #查看配置文件
configuration.xsl log4j.properties zoo_sample.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg #拷贝配置文件并重命名
[root@localhost conf]# vim zoo.cfg #编辑配置文件进行修改
注意!zk-3.6过后的版本在开启服务器后会默认占用8080端口
可以修改配置来修改端口
# admin.serverPort 默认占8080端口
admin.serverPort=8888
2.2、添加myid文件这个配置是区分节点的
[root@localhost conf]# mkdir /opt/zookeeper/data
[root@localhost conf]# vim /opt/zookeeper/data/myid
[root@localhost conf]# echo 1 > /opt/zookeeper/data/myid #分别给三个server节点定向一个编号到myid文件里面(1 2 3)来进行节点区分
切换到启动目录
[root@localhost zookeeper]# cd /opt/zookeeper/bin/
启动zk
[root@localhost bin]# /opt/zookeeper/bin/zkServer.sh start #源码包安装的方式需要指定配置文件
查看启动状态
提示下面错误表示没有关闭selinux或者防火墙(或者直接配置iptables规则)
关闭防火墙跟selinux后状态正常(这是被分配到的从节点)
再看看分配到的主节点(leader)
zkCli.sh客户端使用
[root@localhost bin]# ./zkCli.sh -server 192.168.113.135:2181 #连接本机
[root@localhost bin]# ./zkCli.sh -server 192.168.113.135 #不适用端口连接本机,默认去连接2181端口
[root@localhost bin]# ./zkCli.sh -server 192.168.113.132:2181 #连接到其他机器
2.3、为了安全起见可以给zk集群添加ip白名单,本来zk只是kafka使用只需要集群ip能访问就可以了
登陆zookeeper
进入zookeeper安装目录下的bin目录下执行
./zkCli.sh -server ip:port
./zkCli.sh -server 192.168.113.135:2181 #例!在bin目录下面执行,进入集群的任意一台zk
查看当前权限,未配置会提示允许所有
getAcl /
添加可访问IP
setAcl / ip:192.168.113.132:cdrwa,ip:192.168.113.135:cdrwa,ip:192.168.113.136:cdrwa,ip:127.0.0.1:cdrwa
注:1.在设置IP白名单时,将本机ip 127.0.0.1也加上,让本机也可以访问及修改
在第一次添加完ip白名单后,又想继续添加白名单,则在设置的时候,以前的ip也都是写在命令里,不然以前添加的都会被覆盖掉,那就坑了
查看是否正常添加
getAcl /
如果要恢复所有ip皆可访问,则执行
setAcl / world:anyone:cdrwa
3、配置kafka
[root@localhost opt]# cd /opt/kafka/config/
[root@localhost config]# vim /opt/kafka/config/server.properties
注意!:log.dirs在生产中不要配置到tmp目录下面不然系统定时清理掉这个下面的文件会导致系统崩溃。
启动kafka
[root@localhost ~]# nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties 1> /dev/null 2>&1 &
测试创建topic
[root@localhost bin]# ./kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.113.132:9092
查看topic
[root@localhost bin]# ./kafka-topics.sh --describe --topic quickstart-events --bootstrap-server 192.168.113.132:9092
生产者:发送消息
[root@localhost bin]# ./kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.113.132:9092
消费者:处理消息
[root@localhost bin]# ./kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.113.132:9092
如果使用了SASL认证需要指定--consumer.config client.properties 参数
命令使用拓展
指定创建多个副本及分区
./kafka-topics.sh --create --replication-factor 2 --partitions 4 --topic quickstart-events --bootstrap-server 192.168.113.132:9092
# --replication-factor 参数是指定副本数
# --partitions 指定分区
动态调整分区只能网上调不能向下
./kafka-topics.sh --alter --bootstrap-server 192.168.113.132:9092 --topic quickstart-events --partitions 12
删除topic
./kafka-topics.sh --delete --bootstrap-server 192.168.113.132:9092 --topic quickstart-events
kafka查看所有组
./kafka-consumer-groups.sh --bootstrap-server 192.168.113.132:9092 --list
查看topIc消费组consumer的积压情况
./kafka-consumer-groups.sh --bootstrap-server 192.168.113.132:9092 --describe --group +需要查询的group