kafka集群模式安装
- 集群规划
- 1.安装包下载
- 2.安装zookeeper集群
- 3.安装kafka
- 1.检查zookeeper集群是否运行
- 2.上传安装包并解压
- 3.修改配置文件
- 4.同步安装包到其他服务器
- 5.启动和停止kafka
- 4.集群测试
- 1.创建一个Topic
- 2.查看集群中的Topic
- 3.生产和消费数据测试
- 模拟生产者来生产数据
- 模拟消费者消费数据
- 运行describe topics命令查看分区情况
- 4. 修改topic分区数
- 5. 删除topic
集群规划
服务器名称 | 服务器IP | 安装的组件 |
node1 | 192.168.88.11 | zookeeper,kafka,jdk1.8 |
node2 | 192.168.88.11 | zookeeper,kafka,jdk1.8 |
node3 | 192.168.88.11 | zookeeper,kafka,jdk1.8 |
1.安装包下载
下载链接:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.8.0/kafka_2.12-2.8.0.tgz
2.安装zookeeper集群
请参考
zookeeper集群搭建:
3.安装kafka
1.检查zookeeper集群是否运行
每台机器上执行查看运行状态,一共一个主节点,两个从节点
./zkServer.sh status
node1:
Mode: follower
node2:
Mode: follower
node3:
Mode: leader
2.上传安装包并解压
在node1上执行 解压到/home目录下
tar -zxvf kafka_2.12-2.8.0.tgz -C /home/
3.修改配置文件
创建日志文件件
mkdir /home/kafka_2.12-2.8.0/logs
进入配置文件
cd /home/kafka_2.12-2.8.0/config
vi server.properties
修改配置文件
broker.id=0
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=/home/kafka_2.12-2.8.0/logs
num.partitions=2
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.flush.interval.messages=10000
log.flush.interval.ms=1000
log.retention.hours=168
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=node1:2181,node2:2181,node3:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
delete.topic.enable=true
host.name=node1
4.同步安装包到其他服务器
scp -r kafka_2.12-2.8.0/ node2:$PWD
scp -r kafka_2.12-2.8.0/ node3:$PWD
修改node2 kafka集群的配置
cd /home/kafka_2.12-2.8.0/config
vi server.properties
broker.id=1
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=/home/kafka_2.12-2.8.0/logs
num.partitions=2
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.flush.interval.messages=10000
log.flush.interval.ms=1000
log.retention.hours=168
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=node1:2181,node2:2181,node3:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
delete.topic.enable=true
host.name=node2
修改node3 kafka集群的配置
cd /home/kafka_2.12-2.8.0/config
vi server.properties
broker.id=2
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=/home/kafka_2.12-2.8.0/logs
num.partitions=2
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.flush.interval.messages=10000
log.flush.interval.ms=1000
log.retention.hours=168
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=node1:2181,node2:2181,node3:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
delete.topic.enble=true
host.name=node3
5.启动和停止kafka
每台服务器都要执行
cd /home/kafka_2.12-2.8.0
bin/kafka-server-start.sh config/server.properties
后台启动
cd /home/kafka_2.12-2.8.0
nohup bin/kafka-server-start.sh config/server.properties 2>&1 &
停止服务
cd /home/kafka_2.12-2.8.0
bin/kafka-server-stop.sh
4.集群测试
1.创建一个Topic
node1执行以下命令来创建topic
创建了一个名字为test的主题, 有三个分区,有两个副本
cd /home/kafka_2.12-2.8.0
bin/kafka-topics.sh --create --zookeeper node1:2181 --replication-factor 3 --partitions 3 --topic test
2.查看集群中的Topic
查看kafka当中存在的主题
node1使用以下命令来查看kafka当中存在的topic主题
bin/kafka-topics.sh --list --zookeeper node1:2181,node2:2181,node3:2181
3.生产和消费数据测试
模拟生产者来生产数据
node1服务器执行以下命令来模拟生产者进行生产数据
bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test
模拟消费者消费数据
node2服务器执行以下命令来模拟消费者进行消费数据
bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --from-beginning --topic test
运行describe topics命令查看分区情况
bin/kafka-topics.sh --describe --zookeeper node1:2181 --topic test
这是输出的解释。第一行给出了所有分区的摘要,每个附加行提供有关一个分区的信息。由于我们只有一个分 区用于此主题,因此只有一行。
“leader”是负责给定分区的所有读取和写入的节点。每个节点将成为随机选择的分区部分的领导者。(因为在kafka中 如果有多个副本的话,就会存在leader和follower的关系,表示当前这个副本为leader所在的broker是哪一个)
“replicas”是复制此分区日志的节点列表,无论它们是否为领导者,或者即使它们当前处于活动状态。(所有副本列表 0 ,1,2)
“isr”是“同步”复制品的集合。这是副本列表的子集,该列表当前处于活跃状态并且已经被领导者捕获。(可用的列表 数)
4. 修改topic分区数
bin/kafka-topics.sh --zookeeper node1:2181 --alter --topic test --partitions 2
5. 删除topic
目前删除topic在默认情况下知识打上一个删除的标记,在重新启动kafka后才删除。如果需要立即删除,则需要在
server.properties中配置:
delete.topic.enable=true
然后执行以下命令进行删除topic
bin/kafka-topics.sh --zookeeper node1:2181 --delete --topic test