在 VM 上配置 Mosquitto 以连接到 Azure WebApp

Configuring Mosquitto on VM to Connect to Azure WebApp

我是 运行 Azure 虚拟机上的 MQTT mosquitto 代理 (v.1.4.15) 运行 Ubuntu (v18.04.1)。我的目标是将多个微控制器连接到代理。为了远程监视和控制微控制器,我设置了一个 Azure WebApp,我在上面使用 运行 Node-RED。我正在尝试在网络应用程序和代理之间建立连接。为了正确配置 Mosquitto,我使用的是 DigitalOcean 的 this tutorial。但是,因为我是这部分工作的新手(通常在嵌入式系统上工作),所以我尝试先建立一个没有 SSL 的连接进行测试,然后再添加 SSL。

我用密码保护了 mosquitto,并且能够在本地主机上发布和订阅测试主题(在 VM 终端上使用以下命令)

$ mosquitto_pub -h localhost -t "test" -m "message" -u "user" -P "password"
$ mosquitto_sub -h localhost -t "test" -u "user" -P "password"

我还配置了 mosquitto 来监听 VM 上的端口 8883: /etc/mosquitto/conf.d/default.conf

allow_anonymous false
password_file /etc/mosquitto/passwd

listener 1883 localhost

listener 8883

最后,我更新了 VM 上的防火墙以允许连接到端口 8883。

$ sudo ufw allow 8883

但是,当我尝试将 Node-RED 上 WebApp 上的 MQTT 节点连接到代理时,状态仍然是“正在连接”。除了在 WebApp 上(可能通过 cmd 提示符)之​​外,还有其他方法可以测试它吗?还是我错过了什么?

此外,当重新启动 mosquitto 时(在编辑配置文件和 ufw 之后)和 运行 mosquitto:

$ sudo systemctl restart mosquitto
$ mosquitto

我从终端收到以下消息,表明 mosquitto 仅侦听端口 1883。

1610290040: mosquitto version 1.4.15 (build date Tue, 18 Jun 2019 11:42:22 -0300) starting
1610290040: Using default config.
1610290040: Opening ipv4 listen socket on port 1883.
1610290040: Error: Address already in use

跟进第一条评论。

您需要在 Azure 门户和 ufw

中打开端口

如何在此处找到详细信息:

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nsg-quickstart-portal