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)快取目錄的內容然後重新啟動。