天天看點

Kafka叢集搭建

kafka版本

kafka_2.12-2.2.0.tgz

百度網盤連結:https://pan.baidu.com/s/1LAfXpdVg9IKZNGe8OgBgcQ

提取碼:sb71

zookeeper配置

 vi /usr/local/kafka/config/zookeeper.properties

配置内容:

dataDir=/usr/local/kafka/my_dir/zookeeper/data

clientPort=2181

initLimit=10

syncLimit=5

maxClientCnxns=0

server.1=192.168.1.4:2888:3888

server.2=192.168.1.5:2888:3888

server.3=192.168.1.6:2888:3888

注意:1 dataLogDir路徑未配置(可以嘗試配置),下面啟動指令指定了日志輸出路徑 2 initLimit如果未配置,啟動會提示該參數未配置 3 myid檔案需要寫在dataDir目錄下面,裡面存儲的id和server.x這裡的x相對應。

踩坑:自己搭建zookeeper叢集未能成功(brokerIds未寫入zookeeper節點),使用kafka目錄的zookeeper配置zookeeper叢集,成功了。自己搭建的zookeeper叢集,用dubbo連接配接是可以正常使用的。但是./zkServer.sh status指令檢視時,提示service可能沒啟動

啟動zookeeper

nohup /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties >> /usr/local/kafka/my_dir/zookeeper/log/my.file 2>&1 &

檢視zookeeper日志

tail -100f /usr/local/kafka/my_dir/zookeeper/log/my.file

kafka配置

vi /usr/local/kafka/config/server.properties

配置内容(主要列出):

//每台機器上的id必須不同

broker.id=0

//日志目錄

log.dirs=/usr/local/kafka/my_dir/kafka/log

//本機ip和端口

listeners=PLAINTEXT://192.168.1.5:9092

//zookeeper位址

zookeeper.connect=192.168.1.4:2181,192.168.1.5:2181,192.168.1.6:2181

啟動kafka

nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties >> /usr/local/kafka/my_dir/kafka/log/ka.file 2>&1 &

檢視kafka日志

tail -100f /usr/local/kafka/my_dir/kafka/log/ka.file

建立topic

./kafka-topics.sh --create --zookeeper 192.168.1.6:2181 --replication-factor 2 --partitions 2 --topic myTopic

測試關閉第二台機器kafka

結果:節點内容正确為0,2,全部啟動為0,1,2

發送消息、接收消息

jar包部署到雲伺服器,消息收發成功。

最後說明

機器是雲上的3台機器(同一區域網路,每台機器雙網卡,一個外網的ip、一個内網的ip)。

我在家裡可以調用部署在雲上的zookeeper叢集(zookeeper叢集部署方法基本和上面(kafka内部的zookeeper叢集)類似,不同的就是單獨下載下傳zookeeper包)。

我本機啟動的dubbo服務是可以使用雲上搭建的zookeeper叢集(節點寫入、調用正常)。但是,kafka就是無法寫入brokerIds資訊到zk的節點上。kafka啟動未發現明顯異常。

配置kafka内部的zookeeper.properties搭建叢集,是成功的。