一、背景
最近在學(xué)習(xí) kafka,此處記錄一下 mac上 搭建 kafka集群的步驟。
二、安裝軟件
由于 kafka 依賴 zookeeper 因此需要安裝 zookeeper,而kafka是基于scala語(yǔ)言編寫,scala又是基于 jdk的,因此需要安裝 jdk。
1、 JDK , 推薦在 jdk8 及以上的版本,此處安裝 jdk 略。
2、zookeeper , 在本機(jī)搭建一個(gè) 3 個(gè)節(jié)點(diǎn)的 zk 偽集群。
3、kafka 在本地搭建一個(gè)3個(gè)節(jié)點(diǎn)的 kafka 集群。
三、安裝步驟
1、搭建一個(gè) 3 個(gè)節(jié)點(diǎn)的 zk 偽集群
| ip | 客戶端連接端口 | 集群選舉接口 | 集群原子廣播接口 | server.id中id的值 | 節(jié)點(diǎn)名,目前沒用到,這個(gè)配置到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 配置項(xiàng)指定的目錄中 創(chuàng)建 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 目錄中
將zookeeper解壓三份
3、修改 zookeeper 配置文件,此處以 zk01 為例子
1、修改 conf 目錄下的 zoo_sample.cfg 為 zoo.cfg
修改 zoo_sample.cfg 為 zoo.cfg
2、編輯 zoo.cfg 配置文件
zookeeper配置文件
注意:
1、此處拿 zk01 為示例編寫,因?yàn)槭潜镜厣蠁?dòng)多個(gè),所以 需求修改端口
2、各個(gè)服務(wù)器上的
myid 文件對(duì)應(yīng)的值 都應(yīng)該不一樣,且唯一。3、
dataDir 的路徑需要修改。4、其余的配置可以看著修改,看具體的情況。
5、啟動(dòng)3個(gè)zk節(jié)點(diǎn)
分別進(jìn)入到 zk01/bin,zk02/bin,zk03/bin目錄下執(zhí)行 如下命令
./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、搭建一個(gè)3個(gè)節(jié)點(diǎn)的 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的值必須唯一,且是數(shù)字。
1、下載 kafka
https://www.apache.org/dyn/closer.cgi?path=/kafka/2.6.0/kafka_2.13-2.6.0.tgz
2、解壓3份,并放置到 kafka 目錄中
kafka目錄
3、修改 server.properties 文件,此處以 kafka01 為例子
需要修改的屬性,此處以kafka01為示例,不同的接口修改具體的值
| 屬性名 | 屬性值 | 描述 |
|---|---|---|
| broker.id | 0 | 每個(gè)kafka節(jié)點(diǎn)上配置的都需要不一樣 |
| listeners | PLAINTEXT://127.0.0.1:9092 | 每個(gè)kafka節(jié)點(diǎn)上配置的都需要不一樣,PLAINTEXT表示明文傳輸 |
| log.dirs | ../logs | 日志文件路徑 |
| zookeeper.connect | 127.0.0.1:2181,127.0.0.1:3181,127.0.0.1:4181 | zk服務(wù)器地址 |
| num.partitions | 1 | 主題默認(rèn)的分區(qū)數(shù) |
| offsets.topic.replication.factor | 3 | kafka的內(nèi)部topic __consumer_offsets副本數(shù),默認(rèn)為1,生產(chǎn)環(huán)境建議>1,否則高可用可能有問題 |
| log.retention.hours | 168 | 控制日志文件保留的時(shí)間,單位小時(shí) |
4、啟動(dòng)3個(gè)kafka節(jié)點(diǎn)
依次進(jìn)入到 kafka01/bin,kafka02/bin,kafka03/bin 目錄,執(zhí)行如下命令
./kafka-server-start.sh ../config/server.properties &
5、kafka測(cè)試
此處以 kafka01作為示例
1、創(chuàng)建一個(gè)主題
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
創(chuàng)建一個(gè)主題
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、往創(chuàng)建的主題中發(fā)布一條信息
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
發(fā)送消息
4、讀取剛剛往主題中發(fā)布的消息
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
接收到消息
到此,一個(gè)簡(jiǎn)單的可用的kafka集群就搭建完畢了。
四、參考文檔
1、https://zookeeper.apache.org/
2、https://kafka.apache.org/documentation/#quickstart