【问题标题】:Exposing Azure IoT Edge EFlow ports to host machine(Windows)将 Azure IoT Edge EFlow 端口暴露给主机 (Windows)
【发布时间】:2023-01-12 21:24:22
【问题描述】:
  1. 我有一个在 linux VM 中运行的 API 模块(作为 Iot Edge EFLOW),它公开了某个端口,我们取 8000。这个模块是获取数据并将其发送到其他物联网边缘自定义模块的模块在将其发送到物联网集线器之前进行处理。
  2. 我创建了 2 个模块,1 个 Web API (net6) 和 1 个 CSharp 模块(netcoreapp3.1,使用 VS Code 创建时开箱即用)。
  3. 我部署了这两个模块并且它们成功运行并且我能够通过我的 REST 调用在 linux 内核(EFlow 内核)中执行 curl。 例如 curl -XPOST -H "Content-type: application/json" -d '{ "date":"2022-04-19T11:17:06Z", "temperature":"10", "pressure":"120", "batterylife":"100" }' 'http://localhost:8000/edgesensor'

    现在,问题陈述,我想通过我的 Windows 主机调用相同的端点并到达该端口 8000,这没有发生,我得到一个连接被拒绝。

    我对该 API 模块的配置如下。

             "createOptions": {
                "ExposedPorts": {
                  "8000/tcp": {}
                },
                "HostConfig": {
                  "PortBindings": {
                    "8000/tcp": [
                      {
                        "HostPort": "8000"
                      }
                    ]
                  }
                }
              }
    

    我已经尝试查看提供的示例,例如下面的 EFlow github 链接。

    https://github.com/Azure/iotedge-eflow

    但此示例使 iot edge 充当设备网关,并将调用它的控制台应用程序充当子设备。

    1. 这是连接到 EFlow IoT Edge 设备的唯一方法,即使其充当网关,还是可以按照我尝试调用的方式调用它?

    2. 端口转发也是一种这样的方法。但是 Azure IoT Edge 模块提供的配置中是否有某些东西可以执行此操作,我是否遗漏了什么?

      任何意见表示赞赏。

      干杯!

【问题讨论】:

    标签: c# azure visual-studio-code azure-iot-edge


    【解决方案1】:

    如果要直接从 Windows 主机操作系统连接到端口,可以使用 EFLOW VM IP 地址 + 端口。要获取 EFLOW VM IP,您可以使用 Get-EflowVmAddr

    如果您想从不同的 Windows 设备连接,有两种可能的情况:

    • 带 Win 服务器的内部交换机 - 您可以使用静态 IP 而不是 DHCP,然后使用端口转发到该静态 IP。例如,假设您的 EFLOW VM 具有 172.20.1.2 地址,并且您想要转发端口 8080,那么在 Windows 主机操作系统上您应该运行以下命令: netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=172.20.1.2

    • 使用 Win Client 的默认交换机 - 您可以使用 EFLOW VM 主机名 +“mshome.net”而不是静态 IP。例如,假设您的 EFLOW VM 具有“DESKTOP-TEST-EFLOW”主机名,并且您想要转发端口 8080,那么在 Windows 主机操作系统上您应该运行以下命令: netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=DESKTOP-TEST-EFLOW.mshome.net

    谢谢, 弗朗西斯科

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 2016-06-26
      • 1970-01-01
      相关资源
      最近更新 更多