kafka安装
安装包链接自取
链接:https://pan.baidu.com/s/19qKoEH7uY_pxhyuRXOKOdQ
提取码:l56e
步骤1)上传、解压、更名、配置环境变量
[root@qianfeng01 ~]# tar -zxvf kafka_2.11-1.1.1.tgz -C /usr/local/
[root@qianfeng01 ~]# cd /usr/local/
[root@qianfeng01 ~]# mv kafka_2.11-1.1.1/ kafka
[root@qianfeng01 ~]# vim /etc/profile
.....省略....
#kafka environment
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin
[root@qianfeng01 ~]# source /etc/profile
步骤2)修改server.properties
[root@qianfeng01 kafka]# cd config
[root@qianfeng01 config]# vim server.properties
# 这个文档是修改,不是删除所有,可以退出插入模式 按下/,输入内容,回车查找
# 每个节点的唯一标识符的配置
broker.id=0
# 设置消息的存储位置,如果有多个目录,可以用逗号隔开
log.dirs=/usr/local/kafka/data
# 设置zookeeper的集群地址,同时指定kafka在zookeeper上的各个节点的父znode
zookeeper.connect=qianfeng01:2181,qianfeng02:2181,qianfeng03:2181/kafka
# 下面属性可以改可不改
# 发送消息的缓存大小,100K
socket.send.buffer.bytes=102400
# 接收消息的缓存大小,100K
socket.receive.buffer.bytes=102400
# 服务端处理发送过来的数据的最大字节数 100M
socket.request.max.bytes=104857600
# 消息对应的文件保留的时间,默认使7天
log.retention.hours=168
# 消息对应的文件的最大字节数,1G
log.segment.bytes=1073741824
# 用来检查消息对应的文件是否过期或者是大于1G的时间周期,默认是300秒一检查
log.retention.check.interval.ms=300000
步骤3)同步到其他节点上
[root@qianfeng01 local]# scp -r kafka/ qianfeng02:/usr/local/
[root@qianfeng01 local]# scp -r kafka/ qianfeng03:/usr/local/
[root@qianfeng01 local]# scp /etc/profile qianfeng02:/etc/
[root@qianfeng01 local]# scp /etc/profile qianfeng03:/etc/
步骤4)修改其他节点上的brokerId
下面是kafka的config中的server.properities文件,只需要更改brokerid=1
qianfeng02的broker.id 为 1
qianfeng03的broker.id 为 2
启动kafka
步骤1)先启动zookeeper
三台机器都要启动zk
代码是 zkServer.sh start
步骤2)启动三台机器的kafka
正常启动, 注意,带上配置文件,进行后台启动
kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
关闭:
kafka-server-stop.sh -daemon /usr/local/kafka/config/server.properties
查看Zookeeper维护的数据
首先进入zookeeper
zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls / 查看目录
[zk: localhost:2181(CONNECTED) 0] get /kafka/cluster/id 涉及到补全就改get查看
[zk: localhost:2181(CONNECTED) 0] get /kafka/cluster
下面是总结zookeeper中文件夹内的内容
--cluster/id : 用于存储kafka集群的唯一标识
{"version":"1","id":"mO77ods8Q-ek99Y7lTOwUg"}
--controller : 用于记录多个broker中谁是控制角色
{"version":1,"brokerid":0,"timestamp":"1644464244261"}
--controller_epoch : 记录的是第几次选举controller角色
3
--brokers/ids: 以子znode的形式记录所有的broker唯一标识符
brokers/ids/0 : 记录着自己的信息
{..."endpoints":["PLAINTEXT://qianfeng01:9092"],"host":"qianfeng01","port":9092}
brokers/ids/1 : 记录着自己的信息