【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
全局流量管理 GTM,标准版 1个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息

问题描述

查看了 “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文件。下载页面为: https://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,可以在此处下载:https://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?https://www.geeksforgeeks.org/how-to-install-and-run-apache-kafka-on-windows/

kafka安装及使用教程: https://www.cnblogs.com/freddy-cui/p/16451164.html

 

 

【END】

相关文章
|
23天前
|
NoSQL Redis Windows
windows服务器重装系统之后,Redis服务如何恢复?
windows服务器重装系统之后,Redis服务如何恢复?
53 6
|
1天前
|
边缘计算 安全 网络安全
|
1天前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
29 9
|
4天前
|
应用服务中间件 Apache Windows
免安装版的Tomcat注册为windows服务
免安装版的Tomcat注册为windows服务
13 3
|
4天前
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
15 1
|
20小时前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
17天前
|
安全 Windows
电脑进入桌面后操作无响应?不妨试试禁用Windows Search服务
电脑进入桌面后操作无响应?不妨试试禁用Windows Search服务
|
17天前
|
Windows
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
|
1月前
|
网络安全 虚拟化 Windows
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
|
2月前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误