Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群


概述

对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动几个broker实例即可。

单个节点的安装: Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_2.11‐1.1.0

这里我们来搭建个3个节点的kafka集群来体验下吧


部署信息

192.168.18.130 —> kafka 、 zookeeper(单节点的zk)

192.168.18.131 —> kafka

192.168.18.132 —> kafka

单节点的 zk , 部署上 130上,事实上生产环境的话,zk也是要搭建集群的,这里演示用的话,用单个节点的zk先。

3个节点的kafka注册到 单节点的zk上。


配置信息

kafka的配置文件主要是配置文件 server.properties

130

[root@artisan config]# grep -Ev '^$|^[#;]' server.properties 
broker.id=0
listeners=PLAINTEXT://192.168.18.130: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=/tmp/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.18.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@artisan config]# 


131

[root@artisan config]#  grep -Ev '^$|^[#;]' server.properties
broker.id=1
listeners=PLAINTEXT://192.168.18.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=/tmp/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.18.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.de


132

[root@artisan config]#  grep -Ev '^$|^[#;]' server.properties
broker.id=2
listeners=PLAINTEXT://192.168.18.132: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=/tmp/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.18.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@artisan config]# 

还有一篇博主写的 zk也是高可用的,可以参考下,写的很不错 ZooKeeper+Kafka 高可用集群搭建


验证

启动zookeeper 和 3个 kafka 后,我们创建一个新的topic,副本数设置为3,分区数设置为2

[root@artisan bin]# ./kafka-topics.sh --create --zookeeper 192.168.18.130:2181 --replication-factor 3 --partitions 2 --topic artisan-replicated-topic
Created topic "artisan-replicated-topic".
[root@artisan bin]# 

查看topic的情况

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic
Topic:artisan-replicated-topic  PartitionCount:2  ReplicationFactor:3 Configs:
  Topic: artisan-replicated-topic Partition: 0  Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
  Topic: artisan-replicated-topic Partition: 1  Leader: 2 Replicas: 2,0,1 Isr: 2,0,1
[root@artisan bin]# 

我们来解释下上面的输出内容

第一行是所有分区的概要信息,之后的每一行表示每一个partition的信息。

所有分区的概要信息:

Topic:artisan-replicated-topic  PartitionCount:2  ReplicationFactor:3 Configs

每一个partition的信息:

Topic: artisan-replicated-topic Partition: 0  Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
Topic: artisan-replicated-topic Partition: 1  Leader: 2 Replicas: 2,0,1 Isr: 2,0,1
  • leader节点负责给定partition的所有读写请求。
  • replicas 表示某个partition在哪几个broker上存在备份。不管这个几点是不是”leader“,甚至这个节点挂了,也会列出
  • isr 是replicas的一个子集,它只列出当前还存活着的,并且已同步备份了该partition的节点。

我们可以运行相同的命令查看之前创建的名称为”artisan“的topic

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan
Topic:artisan PartitionCount:1  ReplicationFactor:1 Configs:
  Topic: artisan  Partition: 0  Leader: 0 Replicas: 0 Isr: 0
[root@artisan bin]# 

之前设置了topic的partition数量为1,备份因子为1,因此显示就如上所示了。当然我们也可以通过如下命令增加topic的分区数量(目前kafka不支持减少分区):

[root@artisan bin]# ./kafka-topics.sh --alter --partitions 3 --zookeeper 192.168.18.130:2181 --topic artisan
WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

重新查看

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan
Topic:artisan PartitionCount:3  ReplicationFactor:1 Configs:
  Topic: artisan  Partition: 0  Leader: 0 Replicas: 0 Isr: 0
  Topic: artisan  Partition: 1  Leader: 1 Replicas: 1 Isr: 1
  Topic: artisan  Partition: 2  Leader: 2 Replicas: 2 Isr: 2
[root@artisan bin]# 

现在我们向新建的 artisan-replicated-topic 中发送一些message,kafka集群可以加上所有kafka节点:

[root@artisan bin]# ./kafka-console-producer.sh --broker-list 192.168.18.130:9092,192.168.18.131:9092,192.168.18.132:9092 --topic  artisan-replicated-topic
>artisan message test 1
>artisan message test 2
>artisan message test 3
>

现在131broker 开始消费:

[root@artisan bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.18.131:9092 --from-beginning --topic artisan-replicated-topic
artisan message test 1
artisan message test 3
artisan message test 2

现在我们来测试我们 容错性 ,因为broker1目前是artisan-replicated-topic的分区0的 leader,所以我们要将其kill , kill 掉 131 节点的 kafka

再执行

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic
Topic:artisan-replicated-topic  PartitionCount:2  ReplicationFactor:3 Configs:
  Topic: artisan-replicated-topic Partition: 0  Leader: 2 Replicas: 1,2,0 Isr: 0,2
  Topic: artisan-replicated-topic Partition: 1  Leader: 2 Replicas: 2,0,1 Isr: 2,0
[root@artisan bin]# 

我们可以看到,分区0的leader节点已经变成了broker 2。要注意的是,在Isr中,已经没有了1号节点。leader的选举也是从ISR(in-sync replica)中进行的。

131 重新起来以后,还是可以消费消息

[root@artisan bin]# ./kafka-server-start.sh -daemon ../config/server.properties 
[root@artisan bin]# jps
24436 Kafka
24455 Jps
[root@artisan bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.18.131:9092 --from-beginning --topic artisan-replicated-topic
artisan message test 1
artisan message test 3
artisan message test 2

再看下

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic
Topic:artisan-replicated-topic  PartitionCount:2  ReplicationFactor:3 Configs:
  Topic: artisan-replicated-topic Partition: 0  Leader: 1 Replicas: 1,2,0 Isr: 0,2,1
  Topic: artisan-replicated-topic Partition: 1  Leader: 2 Replicas: 2,0,1 Isr: 2,0,1
[root@artisan bin]# 
[root@artisan bin]# 


相关文章
|
1月前
|
消息中间件 存储 大数据
Apache Kafka: 强大消息队列系统的介绍与使用
Apache Kafka: 强大消息队列系统的介绍与使用
|
2月前
|
消息中间件 安全 Kafka
2024年了,如何更好的搭建Kafka集群?
我们基于Kraft模式和Docker Compose同时采用最新版Kafka v3.6.1来搭建集群。
438 2
2024年了,如何更好的搭建Kafka集群?
|
3天前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
8天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
15 1
|
10天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
17天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
17 0
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
43 1
|
1月前
|
消息中间件 存储 Kafka
Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
【2月更文挑战第19天】Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
140 1
|
2月前
|
Java Linux 开发工具
Centos7搭建minio分布式集群
Centos7搭建minio分布式集群
|
3月前
|
存储 消息中间件 druid
Apache Druid 的集群设计与工作流程
Apache Druid 的集群设计与工作流程
52 0

热门文章

最新文章