Windows系統搭建Kafka集羣(3-broker)
kafka名詞介紹
- Message:消息,就是要發送的內容,一般包裝成一個消息對象。
- Topic:通俗來講的話就是放置“消息”的地方,也就是說消息投遞的一個容器。假如把消息看作是信封的話,那麼Topic就是一個郵箱。
- Partition && Log
Partition分區,可以理解爲一個邏輯上的分區,像是我們電腦的磁盤 C,D,E盤一樣。
Kafka爲每個分區維護着一份日誌Log文件。 - Producers(生產者)
和其他消息隊列一樣,生產者通常都是消息的產生方。
在Kafka中它決定消息發送到指定Topic的哪個分區上。 - Consumers(消費者)
消費者就是消息的使用着,在消費者端也有幾個名詞需要區分一下。
一般消息隊列有兩種模式的消費方式,分別是隊列模式和訂閱模式。
隊列模式:一對一,就是一個消息只能被一個消費者消費,不能重複消費。一般情況隊列支持存在多個消費者,但是對於一個消息,只會有一個消費者可以消費它。
訂閱模式:一對多,一個消息可能被多次消費,消息生產者將消息發佈到Topic中,只要是訂閱改Topic的消費者都可以消費。
Zookeeper集羣
搭建Kafka集羣需要先搭建Zookeeper集羣
參考 : Windows系統ZooKeeper集羣環境搭建
Kafka broker集羣
-
這裏我們以在同一臺服務器配置3套Kafka爲例,將Kafka分別安裝到3個目錄中。如:
-
編輯server.properties
(1) 打開 kafka_A 服務器的server.properties文件,修改或增加如下配置:#唯一標識 broker.id=0 #kafka消息存放的路徑 log.dirs=E:/kafka/kafka_A/kafka_2.13-2.5.0/kafka-logs host.name=192.168.2.76 #監聽端口 port=9097 #對應3臺Zookeeper的IP地址和端口 zookeeper.connect=192.168.2.76:2181,192.168.2.76:2182,192.168.2.76:2183 listeners=PLAINTEXT://192.168.2.76:9097 advertised.listeners=PLAINTEXT://192.168.2.76:9097
(2) 打開 kafka_B 服務器的server.properties文件,修改或增加如下配置:
#唯一標識 broker.id=1 #kafka消息存放的路徑 log.dirs=E:/kafka/kafka_B/kafka_2.13-2.5.0/kafka-logs host.name=192.168.2.76 #監聽端口 port=9098 #對應3臺Zookeeper的IP地址和端口 zookeeper.connect=192.168.2.76:2181,192.168.2.76:2182,192.168.2.76:2183 listeners=PLAINTEXT://192.168.2.76:9098 advertised.listeners=PLAINTEXT://192.168.2.76:9098
(3) 打開 kafka_C 服務器的server.properties文件,修改或增加如下配置:
#唯一標識 broker.id=2 #kafka消息存放的路徑 log.dirs=E:/kafka/kafka_C/kafka_2.13-2.5.0/kafka-logs host.name=192.168.2.76 #監聽端口 port=9099 #對應3臺Zookeeper的IP地址和端口 zookeeper.connect=192.168.2.76:2181,192.168.2.76:2182,192.168.2.76:2183 listeners=PLAINTEXT://192.168.2.76:9099 advertised.listeners=PLAINTEXT://192.168.2.76:9099
-
啓動服務
定位到3個Kafka安裝目錄,以管理員身份運行CMD(用於啓動3個Kafka服務),然後分別在3個窗口中輸入.\bin\windows\kafka-server-start.bat .\config\server.properties命令來啓動這3個Kafka服務
-
驗證Kafka服務是否啓動,如果open則代表啓動成功
執行下面命令:nc -vz 192.168.2.76 9097 nc -vz 192.168.2.76 9098 nc -vz 192.168.2.76 9099
nc安裝參考:Windows 下載安裝 netcat(nc)命令
到此,Kafka的集羣環境就搭建好了。
Kafka命令配置
由於是集羣操作,以前的Kafka操作命令就有所改變,如:
創建主題:
單機模式:
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TestTopic1
或
kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TestTopic1
集羣模式:
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181,localhost:2182,localhost:2183 --replication-factor 1 --partitions 1 --topic TestTopic1
或
kafka-topics --create --zookeeper localhost:2181,localhost:2182,localhost:2183 --replication-factor 1 --partitions 1 --topic TestTopic1
查詢主題:
單機模式:
.\bin\windows\kafka-topics.bat --zookeeper localhost:2181 --list
或
kafka-topics --zookeeper localhost:2181 --list
集羣模式:
.\bin\windows\kafka-topics.bat --zookeeper localhost:2181,localhost:2182,localhost:2183 --list
或
kafka-topics --zookeeper localhost:2181,localhost:2182,localhost:2183 --list
其他命令(如設置用戶讀寫權限、分組權限等)操作也類似。
Kafka集羣測試
創建生產者命令:
.\bin\windows\kafka-console-producer.bat --broker-list 192.168.2.76:9097,192.168.2.76:9098,192.168.2.76:9099 --topic muTopic
創建消費者命令:
.\bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.2.76:9097,192.168.2.76:9098,192.168.2.76:9099 --topic muTopic
創建一個生產者兩個消費者,執行結果如下圖:
執行生產者和消費者命令報下面錯誤:
[2020-07-06 13:55:43,935] WARN [Producer clientId=console-producer] Connection to node -2 (localhost/127.0.0.1:9099) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
解決方案:
在C:\Windows\System32\drivers\etc目錄下,修改hosts文件,新增下面命令: