1. 程式人生 > >kafka叢集搭建

kafka叢集搭建

簡要說明

新版本的kafka自帶有zookeeper,其實自帶的zookeeper完全夠用,本篇文章以記錄使用自帶zookeeper搭建kafka叢集。

1、關於kafka

kafka官網:http://kafka.apache.org/

kafka下載頁面:http://kafka.apache.org/downloads

kafka配置快速入門:http://kafka.apache.org/quickstart

2、修改kafka配置檔案

kafka安裝目錄下的config資料夾為其配置檔案,我們需要修改的有 server.properties和zookeeper.properties。

2.1、修改日誌目錄

首先修改kafka的日誌目錄和zookeeper資料目錄,因為這兩項預設放在tmp目錄,而tmp目錄中內容會隨重啟而丟失:

server.properties:     log.dirs=/tmp/kafka-logs     修改為     log.dirs=/usr/local/kafka/logs zookeeper.properties     dataDir=/tmp/zookeeper     修改為     dataDir=/usr/local/zookeeper/data

2.2、配置kafka

kafka叢集為便於推選leader,一般由奇數臺服務元件叢集,這裡以三臺為例,分別已xxx.xxx.xxx.xxA、xxx.xxx.xxx.xxB和xxx.xxx.xxx.xxC代表服務的ip。

(伺服器IP可使用ifconfig命令檢視)

修改server.properties:

1、設定broker.id,保證每個broker唯一,第一臺可以不修改預設為0,後面兩臺需要修改,如改為1和2

2、設定num.partitions,分割槽數量一般與broker保持一致

3、設定advertised.listeners和listeners,如listeners=PLAINTEXT://xxx.xxx.xxx.xx:9092

4、設定zookeeper.connect,配置三臺服務zookeeper連線地址,如zookeeper.connect=xxx.xxx.xxx.xxA:2181,xxx.xxx.xxx.xxB:2181,xxx.xxx.xxx.xxC:2181

修改zookeeper.properties:

1、設定連線引數,新增如下配置

        tickTime=2000         initLimit=10         syncLimit=5

2、設定broker Id的服務地址

        server.0=xxx.xxx.xxx.xxA:2888:3888         server.1=xxx.xxx.xxx.xxB:2888:3888         server.2=xxx.xxx.xxx.xxC:2888:3888

zookeeper資料目錄新增id配置

在各臺服務的zookeeper資料目錄新增myid檔案,寫入服務broker.id屬性值,如這裡的目錄是/usr/local/zookeeper/data

第一臺broker.id為0的服務到該目錄下執行:echo 0 > myid

3、啟動kafka

kafka啟動時先啟動zookeeper,再啟動kafka;關閉時相反,先關閉kafka,再關閉zookeeper

啟動zookeeper:         bin/zookeeper-server-start.sh config/zookeeper.properties & 啟動kafka:         bin/kafka-server-start.sh config/server.properties &

4、測試kafka叢集

4.1、在第一臺服務上建立test主題

bin/kafka-topics.sh --create --topic test --zookeeper xxx.xxx.xxx.xxA:2181 --replication-factor 3 --partition 3

4.2、展示主題,確認主題建立成功

bin/kafka-topics.sh --list --zookeeperxxx.xxx.xxx.xxA:2181

4.3、建立生產者

bin/kafka-console-producer.sh --broker-listxxx.xxx.xxx.xxA:9092 --topic test

4.4、建立消費者,再另外兩臺服務上分別建立消費者

bin/kafka-console-consumer.sh --zookeeper xxx.xxx.xxx.xxB:2181 --topic test --from-beginning bin/kafka-console-consumer.sh --zookeeper xxx.xxx.xxx.xxC:2181 --topic test --from-beginning

4.5、測試訊息釋出與消費

在IP為xxx.xxx.xxx.xxA的服務生產中輸入訊息回車傳送,確認在服務B和C中的消費者是否接收到

5、其他

如配置完成後需要修改埠或其他配置,但是沒有生效,啟動報錯,可以嘗試清楚kafka(/usr/local/kafka/logs)和zookeeper(/usr/local/zookeeper/data)快取目錄的內容然後重新啟動。