1. 本文Linux版本,kafka版本
Linux -- CentOS-7-x86_64-Minimal-1810
kafka -- kafka_2.12-2.2.0.tgz
安裝方式:tar 解壓縮
安裝kafka前,應先安裝zookeeper,詳見之前的文章
Linux環境下,ZK(zookeeper)單機,集羣安裝配置
本文使用zk集羣(3臺服務器)(192.xxx.xxx.1:2181,192.xxx.xxx.2:2181,192.xxx.xxx.3:2181)。使用的虛擬機,kafka安裝的機器同zk的一致。
2. 安裝 kafka 步驟
2.1 安裝包準備
wget http://mirror.bit.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz
2.2 移動到/usr/local目錄下
mv kafka_2.12-2.2.0.tgz /usr/local
2.3 解壓縮
tar zxvf kafka_2.12-2.2.0.tgz
2.4 創建日誌目錄
mkdir -p /data/kafka-logs
3. 單機配置(以虛擬機192.xxx.xxx.1爲例)
修改配置文件 server.properties
cd /usr/local/kafka_2.12-2.2.0/config
vi server.properties
修改以下內容
listeners=PLAINTEXT://192.xxx.xxx.1:9092 #本機ip,不要用localhost和127.0.0.1
num.io.threads=8 #io線程數
log.dirs=/data/kafka-logs #kafka消息數據存放目錄
auto.create.topics.enable=false #不能自動創建主題
zookeeper.connect=192.xxx.xxx.1:2181,192.xxx.xxx.2:2181,192.xxx.xxx.3:2181 #zk集羣信息
啓動服務,應先啓動配置的zk集羣的所有服務
切換到kafka安裝目錄
cd /usr/local/kafka_2.12-2.2.0
執行以下命令
bin/kafka-server-start.sh config/server.properties &
4. 集羣搭建
使用zk安裝的3臺虛擬機192.xxx.xxx.1,192.xxx.xxx.2,192.xxx.xxx.3搭建集羣,按照單機安裝步驟(除配置文件不同外)安裝kafka。
集羣配置,每臺機器分別修改server.properties,以192.xxx.xxx.1爲例,修改以下內容
broker.id=1 #整數,不要與集羣中其他broker.id重複,可以用ip最後一個字段
listeners=PLAINTEXT://192.xxx.xxx.1:9092 #本機ip,不要用localhost和127.0.0.1
num.io.threads=8 #io線程數
log.dirs=/data/kafka-logs #kafka消息數據存放目錄
num.partitions=6 #每個topic的默認log劃分數,一般爲節點數乘以2
log.retention.hours=168 #日誌保留時長,一般爲7天
auto.create.topics.enable=true
delete.topic.enable=true
default.replication.factor=2
zookeeper.connect=192.xxx.xxx.1:2181,192.xxx.xxx.2:2181,192.xxx.xxx.3:2181 #zk集羣信息
分別修改另外2臺機器的kafka,區別在於 broker.id 和 listeners的ip配置。
啓動服務,按照單機中的啓動服務方法,分別啓動3臺機器上的kafka。
5. 驗證集羣
5.1 創建主題與查看主題
在 192.xxx.xxx.1 上創建topic,到 kafka 安裝 bin 目錄下
cd /usr/local/kafka_2.12-2.2.0/bin
創建名爲 TEST_TOPIC 的主題
./kafka-topics.sh --create --zookeeper 192.xxx.xxx.1:2181 --replication-factor 2 --partitions 3 --topic TEST_TOPIC
可在 192.xxx.xxx.2 上查看主題
cd /usr/local/kafka_2.12-2.2.0/bin
./kafka-topics.sh --describe --zookeeper 192.xxx.xxx.1:2181 --topic TEST_TOPIC
5.2 發送消息與接收消息
在 192.xxx.xxx.1 上發送消息,將消息發送到集羣
./kafka-console-producer.sh --broker-list 192.xxx.xxxx.1:9092,192.xxx.xxxx.2:9092,192.xxx.xxxx.3:9092 --topic TEST_TOPIC
在 192.xxx.xxx.2 上接收來自 192.xxx.xxx.1 的主題爲 TEST_TOPIC 的消息
./kafka-console-consumer.sh --bootstrap-server 192.xxx.xxxx.1:9092 --topic TEST_TOPIC --from-beginning
6. 結束kafka
bin/kafka-server-stop.sh