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

简介: 【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】

相关文章
|
消息中间件 网络协议 Java
【Azure Event Hub】Kafka消息发送失败(Timeout Exception)
Azure closes inbound Transmission Control Protocol (TCP) idle > 240,000 ms, which can result in sending on dead connections (shown as expired batches because of send timeout).
445 75
|
消息中间件 Java Kafka
【Azure Kafka】使用Spring Cloud Stream Binder Kafka 发送并接收 Event Hub 消息及解决并发报错
reactor.core.publisher.Sinks$EmissionException: Spec. Rule 1.3 - onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled serially.
342 6
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
546 32
|
C# Windows
【Azure App Service】在App Service for Windows上验证能占用的内存最大值
根据以上测验,当使用App Service内存没有达到预期的值,且应用异常日志出现OutOfMemory时,就需要检查Platform的设置是否位64bit。
385 11
|
消息中间件 Java Kafka
windows服务器重装系统之后,Kafka服务如何恢复?
windows服务器重装系统之后,Kafka服务如何恢复?
342 8
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
302 0
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
339 0
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
732 1