系統環境
1、操作系統:64位CentOS Linux release 7.2.1511 (Core)
2、jdk版本:1.8.0_121
3、zookeeper版本:zookeeper-3.4.9.tar.gz
4、三台服務器:192.168.1.91; 192.168.1.92; 192.168.1.93;
說明:確保zookeeper集群已經在上面三台服務器上部署成功。可參考之前的文章:centos7安裝zookeeper3.4.9集群。
下載kafka
訪問網址:http://kafka.apache.org/
左側導航欄最下面有個Download按鈕,點進去
進入網址:http://kafka.apache.org/downloads
我寫這篇筆記的時候,官方建議下載 kafka_2.11-1.0.0.tgz,我們選擇編譯好的tar包,即上圖中紅色框框標記的。
拷貝到centos系統
首先還得說明一下,因為我們要做集群,所以每台服務器的配置基本一樣,只需要在一台服務器上安裝好kafka,然后利用scp命令,拷貝到其它兩台服務器,最后修改下參數就行了。所以我只將tar包拷貝到192.168.1.91這台服務器,在這台機器安裝好后,拷貝到另外兩台機器。
創建軟件目錄/soft,因為配置zookeeper時,已經創建了/soft目錄,所以我們在這里不需要創建了
將在windows系統下載好的tar包利用WinSCP工具拷貝到centos系統(192.168.1.91)的/soft目錄
解壓kafka
[root@localhost data]# cd /soft
解壓
[root@localhost soft]# tar -zxvf kafka_2.11-1.0.0.tgz
移動
[root@localhost soft]# mv kafka_2.11-1.0.0 /usr/local/kafka
配置kafka
[root@localhost local]# cd /usr/local/kafka/config/
[root@localhost config]# vi server.properties
Kafka的配置信息就是在server.properties里面配置的
找到下面兩行代碼並分別注釋
#broker.id=0
#zookeeper.connect=localhost:2181
在文件底部添加如下三個配置:
broker.id=1
zookeeper.connect=192.168.1.91:2181,192.168.1.92:2181,192.168.1.93:2181
listeners = PLAINTEXT://192.168.1.91:9092
說明:如果是單機版的話,默認即可,我們什么都不需要改動。現在我們是要配置集群,所以需要配置一些參數
1、broker.id:每台機器不能一樣
2、zookeeper.connect:因為我有3台zookeeper服務器,所以在這里zookeeper.connect設置為3台,必須全部加進去
3、listeners:在配置集群的時候,必須設置,不然以后的操作會報找不到leader的錯誤
WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 40 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
4、看好這一點,另外兩台服務器,zookeeper.connect的配置跟這里的一樣,但是broker.id和listeners不能一樣
拷貝kafka到另外兩台服務器
[root@localhost config]# scp -r /usr/local/kafka root@192.168.1.92:/usr/local/
[root@localhost config]# scp -r /usr/local/kafka root@192.168.1.93:/usr/local/
中間會要求輸入目標機器的密碼,按提示操作就行了,然后修改這兩台服務器的broker.id和listeners,如下:
192.168.1.92
[root@localhost data]# cd /usr/local/kafka/config/
[root@localhost config]# vi server.properties
然后按Ctrl+D鍵,一直定位到文件最底部,修改broker.id和listeners:
broker.id=2
zookeeper.connect=192.168.1.91:2181,192.168.1.92:2181,192.168.1.93:2181
listeners = PLAINTEXT://192.168.1.92:9092
192.168.1.93
[root@localhost data]# cd /usr/local/kafka/config/
[root@localhost config]# vi server.properties
然后按Ctrl+D鍵,一直定位到文件最底部,修改broker.id和listeners:
broker.id=3
zookeeper.connect=192.168.1.91:2181,192.168.1.92:2181,192.168.1.93:2181
listeners = PLAINTEXT://192.168.1.93:9092
開啟相關端口
三台機器都要開啟,kafka通信默認是通過9092端口,也就是我們上面配的listeners
[root@localhost config]# firewall-cmd --zone=public --add-port=9092/tcp --permanent
[root@localhost config]# firewall-cmd --reload
啟動zookeeper
三台都要啟動
[root@localhost config]# /usr/local/zookeeper/bin/zkServer.sh start
啟動kafka,
三台都要啟動
[root@localhost config]# /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
jps命令檢查是否啟動成功
[root@localhost config]# jps
4352 Kafka
4416 Jps
4088 QuorumPeerMain
表示啟動成功
創建topic
[root@localhost ~]# cd /usr/local/kafka/
[root@localhost kafka]# bin/kafka-topics.sh --create --zookeeper 192.168.1.91:2181 --replication-factor 1 --partitions 1 --topic test
如果成功的話,會輸出:Created topic "test".
查看topic
雖然在192.168.1.91上創建的topic,但是另外兩台機器上也能看到
到192.168.1.93客戶端
[root@localhost ~]# cd /usr/local/kafka/
[root@localhost kafka]# bin/kafka-topics.sh --list --zookeeper 192.168.1.92:2181
這里的IP可以是192.168.1.91、192.168.1.92、192.168.1.93中的任何一個,在三台服務器中的任何一台都可以看到
我這里是在93機器上查看92的
創建發布
在192.168.1.91上創建
[root@localhost kafka]# bin/kafka-console-producer.sh --broker-list 192.168.1.91:9092 --topic test
你會看到:
創建消費
在192.168.1.92上消費
[root@localhost kafka]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.92:9092 --topic test --from-beginning
你會看到:
好,至此大功告成
參考網址
參考地址:http://www.cnblogs.com/luotianshuai/p/5206662.html
學習地址:http://orchome.com/kafka/index
官網:http://kafka.apache.org/