1. 程式人生 > >Linux系統下kafka叢集環境的搭建

Linux系統下kafka叢集環境的搭建

1:搭建kafka叢集環境需要安裝JDK、Zookeeper叢集環境

JDK的安裝可以參考https://mp.csdn.net/postedit/84196901這篇部落格

Zookeeper叢集環境的安裝可以參考https://mp.csdn.net/postedit/84201320這篇部落格,具體的步驟在部落格上面有詳細的說明

2:kafka的安裝和配置

kafka下載地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz

#我的目錄統一放在/opt

#首先建立kafka資料夾

cd /opt

mkdir kafka  建立kafka資料夾

cd kafka\

mkdir kafkalogs      #建立kafka訊息目錄,主要存放kafka訊息,對應server1伺服器

mkdir kafkalogs1    #建立kafka訊息目錄,主要存放kafka訊息,對應server2伺服器

mkdir kafkalogs2    #建立kafka訊息目錄,主要存放kafka訊息,對應server3伺服器

#解壓kafka_2.11-1.0.0.tgz到kafka目錄下

tar -zvxf kafka_2.11-1.0.0.tgz

#如果是三臺真實的linux伺服器,只需要將kafka_2.11-1.0.0.tgz解壓到三臺伺服器的/opt/kafka目錄下,再新建kafkalogs即可

修改kafka配置檔案

#進入到config目錄

cd /opt/kafka/kafka_2.11-1.0.0/config/

我們可以看到目錄下有zookeeper的一些檔案,這是kafka內建的zookeeper叢集,我們可以使用它來直接啟動,但建議使用獨立的zookeeper叢集。

-rw-r--r--. 1 root root  906 Oct 27 08:56 connect-console-sink.properties
-rw-r--r--. 1 root root  909 Oct 27 08:56 connect-console-source.properties
-rw-r--r--. 1 root root 5807 Oct 27 08:56 connect-distributed.properties
-rw-r--r--. 1 root root  883 Oct 27 08:56 connect-file-sink.properties
-rw-r--r--. 1 root root  881 Oct 27 08:56 connect-file-source.properties
-rw-r--r--. 1 root root 1111 Oct 27 08:56 connect-log4j.properties
-rw-r--r--. 1 root root 2730 Oct 27 08:56 connect-standalone.properties
-rw-r--r--. 1 root root 1221 Oct 27 08:56 consumer.properties
-rw-r--r--. 1 root root 4727 Oct 27 08:56 log4j.properties
-rw-r--r--. 1 root root 1919 Oct 27 08:56 producer.properties
-rw-r--r--. 1 root root  173 Jan  7 05:54 server-1.properties
-rw-r--r--. 1 root root  173 Jan  7 05:56 server-2.properties
-rw-r--r--. 1 root root  172 Jan  7 05:55 server.properties
-rw-r--r--. 1 root root 1032 Oct 27 08:56 tools-log4j.properties
-rw-r--r--. 1 root root 1023 Oct 27 08:56 zookeeper.properties

我們主要修改 server.properties 這個檔案即可

broker.id=0
listeners=PLAINTEXT://127.0.0.1:9092
port=9092
host.name=127.0.0.1
log.dirs=/opt/kafka/kafkalogs
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

因為我是在一臺伺服器搭建,可以將server.properties複製兩份,分別命名為server1.properties,server2.properties,來模擬三臺伺服器。如果是在三臺不同伺服器,則不需要複製多份,只需要在三臺伺服器分別對server.properties進行配置即可.

#在config目錄下複製兩份server.properties,並命名 server-1.propertis, server-2.propertis

cp server.properties server-1.propertis

cp server.properties server-2.propertis

修改server1.properties如下:

broker.id=1
listeners=PLAINTEXT://127.0.0.1:9093
port=9093
host.name=127.0.0.1
log.dirs=/opt/kafka/kafkalogs1
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

修改server2.properties如下:

broker.id=2
listeners=PLAINTEXT://127.0.0.1:9094
port=9094
host.name=127.0.0.1
log.dirs=/opt/kafka/kafkalogs2
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

啟動kafka叢集並測試

1、啟動服務

#從後臺啟動Kafka叢集(3臺都需要啟動)

#進入到kafka的根目錄 
cd /opt/kafka/kafka_2.11-1.0.0

#模擬啟動三個配置檔案,代表三臺伺服器
./bin/kafka-server-start.sh -daemon config/server.properties
./bin/kafka-server-start.sh -daemon config/server1.properties
./bin/kafka-server-start.sh -daemon config/server2.properties

# 啟動命令中的 -daemon 表示以守護程序的方式啟動

2、測試kafka

建立主題:

#建立一個test主題,分割槽數為3,備份數為3
#在kafka根目錄執行下面命令
bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 3 --partitions 3 --topic test

啟動生產者:

#kafka根目錄執行,啟動一個生產者
bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test

不要關閉生產者視窗,再開啟一個新視窗,進入到kafka根目錄,啟動消費者:

#啟動消費者命令
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning

生產者傳送訊息列表:

消費者接收資訊列表:

在生產者傳送一條訊息,檢視消費者是否有接收成功。接收成功後kafka整合環境搭建完成。