目錄
安裝kafka之前確保jdk和zookeeper集羣已經在服務器上部署成功。安裝方法請自行搜索或者參考:
此處以簡單集羣爲例,單機模式測試請自行搜索。
下文安裝以三臺機器爲例,內網地址爲192.168.159.128-130
安裝集羣時每臺服務器配置基本一樣,因此可以在每臺機器上單獨配置,也可以只在一臺機器上安裝好之後,使用scp命令,將文件夾拷貝到其他服務器,修改差異部分即可。
1、下載及解壓
下載地址:http://mirrors.hust.edu.cn/apache/kafka/
下載方法與zookeeper類似,以curl爲例:
curl -O http://mirrors.hust.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz
下載完成後解壓下載的文件到指定的目錄,此處解壓的位置爲/usr/local目錄:
tar zxf kafka_2.11-1.1.0.tgz -C /usr/local
解壓完修改目錄名(非必須)
mv kafka_2.11-1.1.0.tgz kafka
2、配置(&拷貝)
以192.168.159.128服務器爲例:
kafka的配置文件爲kafka/config/ server.properties,使用vim命令編輯配置文件:
vim config/server.properties
一次修改如下三處:
broker.id=1
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
listeners = PLAINTEXT://192.168.159.128:9092
【ps】如果是單機版的話,默認即可,我們什麼都不需要改動。現在我們是要配置集羣,所以需要配置一些參數:
broker.id:每臺機器不能一樣
zookeeper.connect:因爲我有3臺zookeeper服務器,所以在這裏zookeeper.connect設置爲3臺,必須全部加進去
listeners:在配置集羣的時候,必須設置,不然以後的操作會報找不到leader的錯誤
另外三臺服務器,zookeeper.connect的配置跟這裏的一樣,但是broker.id和listeners不能一樣。
一臺配置完成後,如果是在一臺機器配置需要使用scp命令將目錄拷貝到其他機器,如果分別配置則可以跳過本步。以從192.168.159.128拷貝到192.168.159.129爲例,在192.168.159.128上執行scp命令如下(其餘參考即可):
scp -r /usr/local/kafka [email protected]:/usr/local/
其他機器需要修改的配置項如下:
192.168.159.129
broker.id=2
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
listeners = PLAINTEXT://192.168.159.129:9092
192.168.159.130
broker.id=3
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
listeners = PLAINTEXT://192.168.159.130:9092
3、啓動測試
(1)啓動
啓動之前需要開啓相關的端口,每臺機器都要開啓。kafka通信默認是通過9092端口,也就是我們上面配的listeners。
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --reload
或者直接關閉防火牆。
啓動zookeeper,參考:CentOS7安裝zookeeper。已經啓動忽略
啓動kafka
全部機器都要啓動,命令(在/usr/local/kafka/目錄執行,其他位置做相應修改):
bin/kafka-server-start.sh -daemon config/server.properties
使用jps命令檢查是否啓動成功
關閉:如果bin目錄中stop腳本不能關閉,則可以使用:
jps -l | grep 'kafka\.Kafka'
查看kafka進程id,然後使用 kill -9 id 直接關閉kafka進程。
(2)測試
創建topic(在172.17.3.205服務器/usr/local/kafka/目錄執行,其他位置做相應修改)
bin/kafka-topics.sh --create --zookeeper 192.168.159.128:2181 --replication-factor 1 --partitions 1 --topic test
如果成功的話,會輸出:Created topic "test".
查看topic
雖然在192.168.159.128上創建的topic,但是其他機器上也能看到。例如在任意啓動的機器上/usr/local/kafka/目錄執行命令:
bin/kafka-topics.sh --list --zookeeper 192.168.159.129:2181
這裏的ip可以是128-130任意一臺機器ip。
peoducer和consumer測試略,以下爲方法。
創建發佈
在192.168.159.128上執行創建
bin/kafka-console-producer.sh --broker-list 192.168.159.128:9092 --topic test
創建消費
在192.168.159.129上執行消費
bin/kafka-console-consumer.sh --bootstrap-server 192.168.159.129:9092 --topic test --from-beginning
4、徹底底刪除topic
方法一:快速配置刪除法
kafka啓動之前,在server.properties配置
delete.topic.enable=true
執行命令
bin/kafka-topics.sh --delete --topic test --zookeeper zk:2181
注意:如果kafka啓動之前沒有配置delete.topic.enable=true,topic只會標記爲marked for deletion,加上配置,重啓kafka,之前的topick就真正刪除了。
方法二:手動刪除法(不推薦)
前提:不允許更改server.properties配置
登錄zookeeper客戶端的命令:
zookeeper/bin/zkCli.sh
找到topic所在的目錄:
ls /brokers/topics
找到要刪除的topic,執行如下命令即可,此時topic被徹底刪除:
rmr /brokers/topics/topic名稱
刪除時只需要在任意一臺機器上執行即可自動同步到其他機器。