kafka集群搭建

106 阅读2分钟

1、下载kafka,使用自带的zookeeper。

2、以三台机器为例:

  • broker1 (IP: 192.168.1.1)
  • broker2 (IP: 192.168.1.2)
  • broker3 (IP: 192.168.1.3)

3、配置zookeeper,目录修改为自己的

dataDir=/var/lib/zookeeper 
clientPort=2181 
server.1=192.168.1.1:2888:3888 
server.2=192.168.1.2:2888:3888 
server.3=192.168.1.3:2888:3888 
initLimit=10 
syncLimit=5

参数解释:

  • tickTime:Zookeeper 中的基本时间单位(毫秒)。它用于心跳和超时等机制。
  • dataDir:存储内存数据库快照和事务日志的目录。
  • clientPort:客户端连接 Zookeeper 的端口。
  • initLimit:Zookeeper 启动时允许 followers 完成同步的最大 tick 数。
  • syncLimit:leader 和 follower 之间的消息同步最长允许的 tick 数。
  • server.X:指定集群中各个 Zookeeper 节点的信息,其中 X 是该节点的 ID,192.168.1.X 是该节点的 IP 地址,2888 是 follower 连接到 leader 的端口,3888 是用于 leader 选举的端口。

在每台机器的 dataDir 目录中创建一个名为 myid 的文件,文件内容为该机器的 ID(例如 1、2 或 3):

echo "1" > /var/lib/zookeeper/myid # 在 broker1 上 
echo "2" > /var/lib/zookeeper/myid # 在 broker2 上 
echo "3" > /var/lib/zookeeper/myid # 在 broker3 上

4、启动zookeeper,切换到自己的目录执行,-daemon表示后台启动

./bin/zookeeper-server-start.sh -daemon ../config/zookeeper.properties

5、配置 Kafka Broker

broker.id=1 # 在 broker1 上,其他机器为 23 
listeners=PLAINTEXT://192.168.1.1:9092 # 在 broker1 上,其他机器为 192.168.1.2:9092 和 192.168.1.3:9092 
log.dirs=/var/lib/kafka-logs 
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

6、启动 Kafka Broker,后台启动

./bin/kafka-server-start.sh -daemon ../config/server.properties

7、创建测试主题:

/usr/local/kafka/bin/kafka-topics.sh --create 
--topic my-new-topic 
--bootstrap-server 192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092 
--partitions 3 
--replication-factor 2

8、查看主题:

/usr/local/kafka/bin/kafka-topics.sh 
--describe 
--topic my-new-topic 
--bootstrap-server 192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092

该命令会输出以下结果:

Topic: my-new-topic PartitionCount: 3 ReplicationFactor: 2 Configs:
Topic: my-new-topic Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
Topic: my-new-topic Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3
Topic: my-new-topic Partition: 2 Leader: 3 Replicas: 3,1 Isr: 3,1

输出解释:

  • Topic:主题名称。
  • PartitionCount:分区数量。
  • ReplicationFactor:副本因子。
  • Configs:主题的配置信息(如果有的话)。
  • Partition:分区编号。
  • Leader:分区的主节点 broker ID,负责所有读写操作。
  • Replicas:存储该分区副本的 broker ID 列表。
  • Isr:同步副本集合(In-Sync Replicas),即当前与 Leader 同步的副本 broker ID 列表。