一、背景
最近在学习 kafka
,此处记录一下 mac
上 搭建 kafka
集群的步骤。
二、安装软件
由于 kafka
依赖 zookeeper
因此需要安装 zookeeper
,而kafka
是基于scala
语言编写,scala
又是基于 jdk
的,因此需要安装 jdk
。
1、 JDK , 推荐在 jdk8
及以上的版本,此处安装 jdk
略。
2、zookeeper , 在本机搭建一个 3 个节点的 zk 伪集群。
3、kafka 在本地搭建一个3个节点的 kafka 集群。
三、安装步骤
1、搭建一个 3 个节点的 zk 伪集群
ip | 客户端连接端口 | 集群选举接口 | 集群原子广播接口 | server.id中id的值 | 节点名,目前没用到,这个配置到hosts文件中 |
---|---|---|---|---|---|
127.0.0.1 | 2181 | 12888 | 13888 | 1 | zk01 |
127.0.0.1 | 3181 | 22888 | 23888 | 2 | zk02 |
127.0.0.1 | 4181 | 32888 | 33888 | 3 | zk03 |
注意:
1、server.id
的中的id
的配置是在 zoo.cfg
配置文件的 dataDir
配置项指定的目录中 创建 myid
文件指定的。
1、下载 zookeeper 安装包
get https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
2、解压三份,并放置在 zookeeper 目录中
3、修改 zookeeper 配置文件,此处以 zk01 为例子
1、修改 conf 目录下的 zoo_sample.cfg 为 zoo.cfg
2、编辑 zoo.cfg 配置文件
注意:
1、此处拿 zk01 为示例编写,因为是本地上启动多个,所以 需求修改端口
2、各个服务器上的 myid
文件对应的值 都应该不一样,且唯一。
3、dataDir
的路径需要修改。
4、其余的配置可以看着修改,看具体的情况。
5、启动3个zk节点
分别进入到 zk01/bin
,zk02/bin
,zk03/bin
目录下执行 如下命令
./zkServer.sh --config ../conf start
6、连接 zk
集群
./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:3181,127.0.0.1:4181
2、搭建一个3个节点的 kafka 集群
ip | 客户端连接端口 | broker.id |
---|---|---|
127.0.0.1 | 9092 | 0 |
127.0.0.1 | 9093 | 1 |
127.0.0.1 | 9094 | 2 |
注意:
1、broker.id
的值必须唯一,且是数字。
1、下载 kafka
https://www.apache.org/dyn/closer.cgi?path=/kafka/2.6.0/kafka_2.13-2.6.0.tgz
2、解压3份,并放置到 kafka 目录中
3、修改 server.properties 文件,此处以 kafka01 为例子
需要修改的属性
,此处以kafka01
为示例,不同的接口修改具体的值
属性名 | 属性值 | 描述 |
---|---|---|
broker.id | 0 | 每个kafka节点上配置的都需要不一样 |
listeners | PLAINTEXT://127.0.0.1:9092 | 每个kafka节点上配置的都需要不一样,PLAINTEXT表示明文传输 |
log.dirs | ../logs | 日志文件路径 |
zookeeper.connect | 127.0.0.1:2181,127.0.0.1:3181,127.0.0.1:4181 | zk服务器地址 |
num.partitions | 1 | 主题默认的分区数 |
offsets.topic.replication.factor | 3 | kafka的内部topic __consumer_offsets副本数,默认为1,生产环境建议>1,否则高可用可能有问题 |
log.retention.hours | 168 | 控制日志文件保留的时间,单位小时 |
4、启动3个kafka节点
依次进入到 kafka01/bin
,kafka02/bin
,kafka03/bin
目录,执行如下命令
./kafka-server-start.sh ../config/server.properties &
5、kafka测试
此处以 kafka01
作为示例
1、创建一个主题
bin/kafka-topics.sh --create --topic test-001 --replication-factor 1 --partitions 1 --bootstrap-server 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094
2、查看主题信息
bin/kafka-topics.sh --describe --bootstrap-server 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 --topic test-001
3、往创建的主题中发布一条信息
bin/kafka-console-producer.sh --topic test-001 --bootstrap-server 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094
4、读取刚刚往主题中发布的消息
bin/kafka-console-consumer.sh --topic test-001 --from-beginning --bootstrap-server 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094
到此,一个简单的可用的kafka集群就搭建完毕了。
四、参考文档
1、https://zookeeper.apache.org/
2、https://kafka.apache.org/documentation/#quickstart
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。