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

kafka arm版本部署 kafka集群安装部署_服务器


这是输出的解释。第一行给出了所有分区的摘要,每个附加行提供有关一个分区的信息。由于我们只有一个分 区用于此主题,因此只有一行。

“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