kafka 集群部署 三台机器源码安装

kafka集群部署

1.1 环境准备

1.1.1 准备zookeeper

如果已经有现成的zookeeper单点或者集群可以直接使用,kafka自己也提供了的zookeeper的服务,需要修改 config/zookeeper.properties,下面会有讲解。我这里没装zookeeper,用了kafka自带的zookeeper

1.1.2 准备三台机器并都安装java环境

如果不安装java启动会报错

192.168.40.131 kafka-master
192.168.40.132 kafka-slave1
192.168.40.133 kafka-slave2

1.1.3 安装包下载

官网地址: https://kafka.apache.org/downloads
如果下载很慢,可以FQwindows下载再上传到linux

wget https://archive.apache.org/dist/kafka/2.1.1/kafka_2.12-2.1.1.tgz

2.1 开始安装

2.1.1 解压安装包

tar zxvf kafka_2.12-2.1.1.tgz -C /opt/
mv /opt/kafka_2.12-2.1.1/ /opt/kafka

2.1.2 添加环境变量

在三台机器上都修改

vim /etc/profile
export ZOOKEEPER_HOME=/opt/kafka
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile

2.1.3 修改配置文件

2.1.3.1 修改 /opt/kafka/config/server.properties
vim /opt/kafka/config/server.properties
broker.id=0
listeners = PLAINTEXT://192.168.40.131:9092
advertised.listeners=PLAINTEXT://192.168.40.131:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/log/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.40.131:2181,192.168.40.132:2181,192.168.40.133:2181
#注意了:这里是zookeeper的地址,因为用的是kafka自带的zookeeper
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

拷贝两份配置分别到192.168.40.132和192.168.40.133
修改192.168.40.132的配置

broker.id=1
listeners=PLAINTEXT://192.168.40.132:9092
advertised.listeners=PLAINTEXT://192.168.40.132:9092

修改192.168.40.133的配置

broker.id=2
listeners=PLAINTEXT://192.168.40.133:9092
advertised.listeners=PLAINTEXT://192.168.108.133:9092 
2.1.3.2 修改kafka自带的zookeeper配置 /opt/kafka/config/zookeeper.properties
vim /opt/kafka/config/zookeeper.properties
dataDir=/opt/zookeeper
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
server.0=192.168.40.131:2888:3888  #这是三个kafka自带的zookeeper,这样配置成集群
server.1=192.168.40.132:2888:3888
server.2=192.168.40.133:2888:3888

修改后把这个文件分别拷贝到192.168.40.132 和 192.168.40.133 两台slave上
注意:这里的配置文件是/opt/zookeeper,需要给zookeeper创建myid文件
192.168.40.131上

mkdir -p /opt/zookeeper;echo "0" > /opt/zookeeper/myid

192.168.40.132上

mkdir -p /opt/zookeeper;echo "1" > /opt/zookeeper/myid

192.168.40.133上

mkdir -p /opt/zookeeper;echo "2" > /opt/zookeeper/myid

2.1.4 启动zookeeper集群和kafka集群

kafka启动时先启动zookeeper,再启动kafka;关闭时相反,先关闭kafka,再关闭zookeeper

2.1.4.1 启动zookeeper

最后都要以后台启动方式运行

前台启动:测试查看日志是否有报错,三台机器都要执行
bin/zookeeper-server-start.sh config/zookeeper.properties  
后台启动:最后运行方式,三台机器都要执行
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

注:这三台机器的/etc/hosts下面的ip和主机名,要不不要写,要不就写正确,否则zookeeper集群启动会报错,只写ip也要注意

最后这三台机器都要后台启动zookeeper

2.1.4.2 启动kafka
前台启动:测试查看日志是否有报错,三台机器都要执行
bin/kafka-server-start.sh  config/server.properties
后台启动:最后运行方式,三台机器都要执行
bin/kafka-server-start.sh  -daemon config/server.properties

前台启动测试没有报错日志后,再后台启动。至此,kafka和zookeeper集群部署完成

2.1.4.3 kafka和zookeeper集群测试
创建topic
kafka-topics.sh --create --zookeeper 192.168.40.131:2181,192.168.40.132:2181,192.168.40.133:2181 --replication-factor 3 --partitions 3 --topic test

显示topic
kafka-topics.sh --describe --zookeeper 192.168.40.131:2181,192.168.40.132:2181,192.168.40.133:2181 --topic test

PartitionCount:partition个数   
   ReplicationFactor:副本个数   
   Partition:partition编号,从0开始递增   
   Leader:当前partition起作用的broker.id   
   Replicas: 当前副本数据所在的broker.id,是一个列表,排在最前面的其作用  
   Isr:当前kakfa集群中可用的broker.id列表
列出topic
kafka-topics.sh --list --zookeeper 192.168.40.131:2181,192.168.40.132:2181,192.168.40.133:2181

生产者发送消息
kafka-console-producer.sh --broker-list 192.168.40.131:9092 --topic test
消费者消费消息
kafka-console-consumer.sh --bootstrap-server 192.168.40.131:9092 --topic test --from-beginning
查看写入kafka集群中的消息(重要命令,判断日志是否写入Kafka的重要依据)
kafka-console-consumer.sh --bootstrap-server 192.168.40.131:9092 --topic tiops --from-beginning
删除 Topic----命令标记删除后,再次删除对应的数据目录

bin/kafka-topics.sh--delete --zookeeper master:2181,slave1:2181,slave2:2181 --topic topic_name
若 delete.topic.enable=true 
直接彻底删除该 Topic。
若delete.topic.enable=false 
如果当前 Topic 没有使用过即没有传输过信息:可以彻底删除。
如果当前 Topic 有使用过即有过传输过信息:并没有真正删除 Topic 只是把这个 Topic 标记为删除(marked for deletion),重启 Kafka Server 后删除。
注:delete.topic.enable=true 配置信息位于配置文件 config/server.properties 中(较新的版本中无显式配置,默认为 true)。
posted @ 2022-04-07 14:39  liwenchao1995  阅读(229)  评论(0编辑  收藏  举报