Windows下搭建Apache Kafka2.3.1集群模式

前面我已经介绍如何搭建Apache Kafka2.3.1的单机版,今天给大家带来的是如何在Windows下搭建Apache Kafka2.3.1集群模式。

前言

在这里插入图片描述

  • Producer API允许程序发布数据流到一个到多个Kafka topic。
  • Consumer API允许程序订阅一个到多个topic,并且进行消费。
  • Streams API允许程序作为一个数据流处理,将一个或多个topic中输入的数据进行消费,并生产数据流到一个或多个topics中。
  • Connector API,可以通过Connector管理Kafka和另一个系统之间的数据复制,比如去捕获关系型数据库中的任意改变到一个表中。

我们已经认识了kafka集群的几个组成部分,接下我们开始搭建集群。

对于Kafka集群而言,单个Broker节点就是一个集群,因此除了启动更多的Broker实例外,没有什么大的变化。但是为了更好地理解它,让我们将集群扩展到三个节点。

1. Zookeeper的启动

Kafka集群的是把状态保存到了Zookeeper中。首先我们启动Zoookeeper节点。

bin\windows\zookeeper-server-start.bat config/zookeeper.properties

这里我启动仍然是一个单机节点的Zookeeper。其实Zookeeper集群的配置也是比较简单。这里我们就啰嗦了。

2.准备三份Kafka配置文件

在这里插入图片描述
现在我们修改这三个配置文件:

config/server.properties:
    broker.id=0
    listeners=PLAINTEXT://:9092
    log.dirs=/tmp/kafka-logs

config/server-1.properties:
    broker.id=1
    listeners=PLAINTEXT://:9093
    log.dirs=/tmp/kafka-logs-1
 
config/server-2.properties:
    broker.id=2
    listeners=PLAINTEXT://:9094
    log.dirs=/tmp/kafka-logs-2

其中:

  • broker.id: 是每一个borker在集群的唯一标识,和zookeeper的myid性质一样
  • listeners:是每一个broker的监听端口,默认是9092
  • log.dir 是每一个broker的消息存放的目录

3.启动三个Kafka节点

3.1启动9092

 bin\windows\kafka-server-start.bat config/server.properties 

3.2启动9093

 bin\windows\kafka-server-start.bat config/server-1.properties 

3.3启动9094

 bin\windows\kafka-server-start.bat config/server-2.properties 

这是收三个节点都已经启动
在这里插入图片描述

3.4 在Zookeeper的节点中查看Kafka集群的ids

这里我们使用zookeeper-shell.bat来连接

E:\tools\kafka_2.12-2.3.1\bin>windows\zookeeper-shell.bat /
Connecting to /
Welcome to ZooKeeper!
WATCHER::

WatchedEvent state:SyncConnected type:None path:null

ls /
[cluster, controller_epoch, controller, brokers, zookeeper, kafka-manager, admin
, isr_change_notification, consumers, log_dir_event_notification, latest_produce
r_id_block, config]
ls /brokers
[ids, topics, seqid]
ls /brokers/ids
[0, 1, 2]

我们可以看到kafka集群的数据已经注册到了Zookeeper中。

4.创建一个Topic使用3个副本

Now create a new topic with a replication factor of three:

bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic 

但现在我们已经搭建好了kafka集群,我们怎么样知道每一个Broker在做什么呢?,接下我们使用describe topics查看集群状态

bin\windows\kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic my-replicated-topic
Topic:my-replicated-topic       PartitionCount:10       ReplicationFactor:1
Configs:segment.bytes=1073741824
        Topic: my-replicated-topic      Partition: 0    Leader: 0       Replicas
: 0     Isr: 0
        Topic: my-replicated-topic      Partition: 1    Leader: 1       Replicas
: 1     Isr: 1
        Topic: my-replicated-topic      Partition: 2    Leader: 2       Replicas
: 2     Isr: 2
        Topic: my-replicated-topic      Partition: 3    Leader: 0       Replicas
: 0     Isr: 0
        Topic: my-replicated-topic      Partition: 4    Leader: 1       Replicas
: 1     Isr: 1
        Topic: my-replicated-topic      Partition: 5    Leader: 2       Replicas
: 2     Isr: 2
        Topic: my-replicated-topic      Partition: 6    Leader: 0       Replicas
: 0     Isr: 0
        Topic: my-replicated-topic      Partition: 7    Leader: 1       Replicas
: 1     Isr: 1
        Topic: my-replicated-topic      Partition: 8    Leader: 2       Replicas
: 2     Isr: 2
        Topic: my-replicated-topic      Partition: 9    Leader: 0       Replicas
: 0     Isr: 0

下面是对输出的解释。

第一个行显示所有partitions的一个总结,以下每一行给出一个partition中的信息,如果我们只有一个partition,则只显示一行。

  • leader 是在给出的所有partitons中负责读写的节点,每个节点都有可能成为leader

  • replicas 显示给定partiton所有副本所存储节点的节点列表,不管该节点是否是leader或者是否存活。

  • isr 副本都已同步的的节点集合,这个集合中的所有节点都是存活状态,并且跟leader同步。

让我们发送一些信息给我们的新topic:

bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic my-replicated-topic
...
my test message 1
my test message 2
^C

现在我们来消费这些消息:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2
^C

让我们来测试一下容错性。 Broker 1 现在是 leader,让我们来杀了它:
在Linux上用

> ps aux | grep server-1.properties
7564 ttys002    0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.8/Home/bin/java...
> kill -9 7564

注意:我们使用过的Windows,
在 Windows 上用:

> wmic process where "caption = 'java.exe' and commandline like '%server-1.properties%'" get processid
ProcessId
6016
> taskkill /pid 6016 /f

leader已经切换到一个从节点,而且节点1也不在同步副本集中了:

bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic my-replicated-topic

不过,即便原先写入消息的leader已经不在,这些消息仍可用于消费:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2
^C

到这里kafka集群就已经搭建完成。

发布了140 篇原创文章 · 获赞 278 · 访问量 81万+

猜你喜欢

转载自blog.csdn.net/u010046908/article/details/103061330
今日推荐