【Azure Developer】在Azure VM (Windows) 中搭建 kafka服務,並且通過本地以及遠程驗證 發送+消費 消息
- 2022 年 7 月 27 日
- 筆記
- 【Azure Developer】, Azure Developer, Azure 環境, VM搭建Kafka服務, 修改VM防火牆和Inbound Rule
問題描述
查看了 「How to Install and Run Apache Kafka on Windows? 」 一文後,成功安裝了Kafka服務,但是如何使用呢?如何在其他機器上連接到服務呢?如何發送消息,消費消息呢?
這些內容,文檔中都沒有介紹,所以本文主要是根據此文展示如何安裝,如何生成Topic,如何發送消息,消費消息。 以及在Azure VM中需要修改那些配置後,才能從本地或者其他機器上連接到kafka服務。
操作步驟
第一部分:安裝和運行 Apache Kafka
參考How to Install and Run Apache Kafka on Windows一文,總的包含六個步驟,這裡我們使用一樣的步驟。
1)在Apache Kafka下載頁面,以 Binary downloads 方式下載 kafka文件。下載頁面為: //kafka.apache.org/downloads,本文下載的文件為 Scala 2.13 – kafka_2.13-3.2.0.tgz
2)解壓文件到目標文件夾中(文件夾自己選擇,如本文中使用 c:\lbtestfile\kafka)
3)進入Config目錄,修改 zookeeper.properties 文件中的 dataDir 路徑。在當前路徑的基礎上( C:/lbtestfile/kafka )加上 /zookeeper-data,這樣完整的路徑為:C:/lbtestfile/kafka/zookeeper-data
4)同樣在config文件夾中,修改 server.properties 文件中的 log.dirs 內容。同樣在當前路徑的基礎上( C:/lbtestfile/kafka )加上 /kafka-logs,這樣完整的路徑為:C:/lbtestfile/kafka/kafka-logs
5)以上操作已經完成了zookeeper和kafka服務的配置,現在打開一個CMD窗口,進入到kafka文件夾中,開始啟動zookeeper,使用的命令如下:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
6)現在打開另一個CMD窗口,同樣進入Kafka文件夾中,啟動Kafka服務,使用命令如下:
.\bin\windows\kafka-server-start.bat .\config\server.properties
注意:在執行 5,6步的時候,都需要安裝Java運行環境,所以如果VM中沒有安裝Java,可以在此處下載://www.java.com/en/download/
以上步驟完成後,Kafka服務已經成功啟動。。。
### 第5,6步執行動圖:
第二部分:創建Topic,發送消息,消費消息
創建Topic命令 : .\bin\windows\kafka-topics.bat –create –topic test_topic –bootstrap-server localhost:9092
發送消息命令 : .\bin\windows\kafka-console-producer.bat –broker-list localhost:9092 –topic test_topic
消費消息命令 : .\bin\windows\kafka-console-consumer.bat –bootstrap-server localhost:9092 –topic test_topic –from-beginning
### 演示動畫:
創建Topic命令
發送和接受消息:
第三部分:修改VM防火牆和Inbound規則,遠程訪問Kafka服務
當把第二部分中生產者(發送消息),消費者(消費消息) 中的localhost修改為VM IP地址後(xxx.xxx.140.73),就可以在其他機器中訪問Kafka服務。但在使用中,遇見了下列問題:
1)Bootstrap broker xxx.xxx.140.73:9092 (id: -1 rack: null) 和 Connection to node -1 (/xxx.xxx.140.73:9092) could not be established.
- WARN [Producer clientId=console-producer] Bootstrap broker xxx.xxx.140.73:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
- WARN [Producer clientId=console-producer] Connection to node -1 (/xxx.xxx.140.73:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
這是因為VM的Inbound Rule中並沒有配置打開從當前環境訪問的9092端口,所以需要找到本機的IP地址後,然後在Azure VM 門戶頁面中添加Inbound Rule. 同時,也必須在VM中,關閉Windows操作系統本身的所有防火牆。
### 在Azure VM頁面,添加VM inbound Security rule
### RDP到VM中,關閉所有防火牆配置
2) Producer 和 Consumer 解析 kafka服務域名失敗
生產者解析 kafka 域名時候,解析到 127.0.0.2:9092,IP地址並不是VM的公共IP (本示例中的VM IP地址應為: xxx.xxx.140.73)
- WARN [Producer clientId=console-producer] Connection to node 0 (xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp.cn/127.0.0.2:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
而消費端報出的錯誤則能明確的指出,kafka域名無法解析.
- GroupCoordinator: xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp.cn:9092: Failed to resolve ‘xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp.cn:9092’: No such host is known. (after 0ms in state CONNECT, 4 identical error(s) suppressed)
要解決以上問題,非常簡單。
- 修改Windows Host文件(路徑為:C:\Windows\System32\drivers\etc )。在其中添加域名解析 xxx.xxx.140.73 xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp.cn
經過以上兩步操作後,終於可以從其他機器中遠程訪問Kafka服務了。
參考文檔
How to Install and Run Apache Kafka on Windows?://www.geeksforgeeks.org/how-to-install-and-run-apache-kafka-on-windows/