【Kafka学习笔记2】Kafka2.4.0搭建分布式集群

Kafka版本:2.4.0

现在来搭建有3个节点实例的Kafka集群。

1、准备三份配置文件

首先复制2conf/server.properties文件:

> cd /opt/kafka_2.12-2.4.0/
> cp config/server.properties config/server1.properties
> cp config/server.properties config/server2.properties

因为server.properties文件中的broker.id=0,所以我们可以分别修改server1.propertiesserver2.properties文件如下:

(1)config/server1.properties

broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1

(2)config/server2.properties

broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/tmp/kafka-logs-2

2、启动zookeeper

执行下面命令启动zookeeper

> cd /opt/kafka_2.12-2.4.0/
> bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

3、启动三个实例

执行下面三个命令,启动三个Kafka的实例:

> cd /opt/kafka_2.12-2.4.0/
> bin/kafka-server-start.sh -daemon config/server.properties
> bin/kafka-server-start.sh -daemon config/server1.properties
> bin/kafka-server-start.sh -daemon config/server2.properties

然后执行jps命令查看java进程:

> jps
5346 Kafka
6162 Kafka
5771 Kafka
4973 QuorumPeerMain
6255 Jps

可以看到,有一个QuorumPeerMain,这代表zookeeper实例;有三个Kafka,分别代表启动的三个Kafka实例。

4、创建topic

现在,创建一个topic,叫做3-replic-topic,这个topic1个分区,3个副本:

扫描二维码关注公众号,回复: 9232403 查看本文章
> bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --partitions 1 --replication-factor 3 --topic 3-replic-topic

可以通过下变得命令查看这个topic的信息:

> bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic 3-replic-topic

返回信息如下:

Topic: 3-replic-topic   PartitionCount: 1       ReplicationFactor: 3    Configs: segment.bytes=1073741824
        Topic: 3-replic-topic   Partition: 0    Leader: 1       Replicas: 1,0,2 Isr: 1,0,2

其中:

  • Topic:指出这个topic的名称。
  • PartitionCount:代表分区个数。
  • ReplicationFactor:代表分区下副本个数。
  • Leader:代表选举出来的这个分区下的领导节点,负责该分区的读写工作。每个分区下的leader都是随机选举出来的。这里的Leader:1代表选出来的领导节点是broker.id=1的节点。
  • Replicas:代表该分区下复制日志的节点列表,这里的1,0,2就是我们指定的每个Kafka节点的broker.id的值。
  • Isr:代表一组存活着的同步节点的列表。

5、消费者订阅主题消息

执行下面的命令,创建一个消费者订阅这个3-replic-topic主题:

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9094 --from-beginning --topic 3-replic-topic

创建一个消费者,订阅broker.id=2Kafka节点的名为3-replic-topic的主题,该Kafka节点监听的端口号为9094

6、生产者发布主题消息

执行下面的命令,创建一个生产者,向这个3-replic-topic主题发布消息:

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic 3-replic-topic

创建一个生产者,向broker.id=0Kafka节点的名为3-replic-topic的主题发布消息,该Kafka节点监听的端口号为9092

7、测试Kafka集群的容错能力

现在来测试一下这个Kafka集群的容错能力。因为broker.id=1的节点是领导节点,现在杀掉他:

> ps aux | grep server1.properties

查看加载了server1.properties文件的进程是多少,得到的是5771

然后通过jps指令查看:

> jps
5346 Kafka
6162 Kafka
5771 Kafka
4973 QuorumPeerMain
8463 Jps

确实有一个进程号为5771Kafka进程。

然后,可以通过kill指令杀掉他:

> kill -9 5771

再次通过jps指令查看:

> jps
5346 Kafka
6162 Kafka
4973 QuorumPeerMain
8510 Jps

发现,5771Kafka进程消失了,因为它被杀掉了。

接下来,我们再次查看3-replic-topic主题信息:

> bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic 3-replic-topic

得到下面的信息:

Topic: 3-replic-topic   PartitionCount: 1       ReplicationFactor: 3    Configs: segment.bytes=1073741824
        Topic: 3-replic-topic   Partition: 0    Leader: 0       Replicas: 1,0,2 Isr: 0,2

可以看出,现在领导节点变成了broker.id=0Kafka节点,Isr:0,2指出存活的Kafka节点为broker.id=0broker.id=2的节点,因为broker.id=1的节点被杀掉了。

一旦领导节点宕机,Kafka集群便会从存活的节点中重新选举出一个新的领导节点。

发布了178 篇原创文章 · 获赞 152 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/hbtj_1216/article/details/104102569