centos7 搭建kafka集羣

目錄

1、下載及解壓

2、配置(&拷貝)

3、啓動測試

4、徹底底刪除topic


安裝kafka之前確保jdk和zookeeper集羣已經在服務器上部署成功。安裝方法請自行搜索或者參考:

CentOS7安裝JDK

CentOS7安裝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名稱
刪除時只需要在任意一臺機器上執行即可自動同步到其他機器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章