【问题标题】:Access Azure Service Fabric application from internet从 Internet 访问 Azure Service Fabric 应用程序
【发布时间】:2016-11-25 16:55:13
【问题描述】:

我想我错过了一些表面上的东西。 我在 Azure 中创建了 SF 集群。它有一个负载均衡器和一个包含 3 个虚拟机(节点)的网络,这些虚拟机的 IP 地址在 10.0.0.0/16。

当我向负载均衡器询问应用程序端点时,它会以节点 IP 地址进行响应。 (我用 WireShark 捕获数据包)但是我无法访问它,因为网络是私有的。

关于我的案例的更多信息:3xA0 实例,net.tcp:20001 端点,防火墙允许连接,打开和侦听的端口,我为平衡器分配了公共 IP 地址,探测服务端口。

【问题讨论】:

    标签: azure tcp azure-service-fabric


    【解决方案1】:

    您需要在负载均衡器上分配一个公共 IP 地址。您可以在documentation 中找到一些非常好的详细指南。

    【讨论】:

    • 我的负载均衡器有公共 IP 地址。我可以访问它,它会用节点的端点响应我。我有文档中的探针和其他内容。问题是我的虚拟机都没有公共 IP 地址,负载均衡器只是回复我应该在哪里连接(它希望我直接连接到节点)。我期待它会通过流量。
    • 没错,您不希望您的虚拟机拥有公共 IP。您是否尝试过在负载均衡规则上配置直接返回?我们需要为 SQL AAG 执行此操作。
    • 是的。我的均衡规则有 Frontend ip address = load balancer public ip, Protocol = TCP, port = my service port, backend pool = my vm scaling group, probe, session persistence = Client IP, Floating IP = true。效果一样。我的客户端应用程序显示“无法连接到 10.0.0.5:20001/.....”
    • 您位于 10.0.0.5 上的虚拟机是否有与之关联的网络安全组?
    【解决方案2】:

    好的,就是这样:

    当您想从集群外部与服务通信时 - 只需使用负载平衡器 IP,您不需要命名服务器通信。负载均衡器具有可以检查集群中每个节点上的端口并将您的请求转发到具有您所要求的服务的随机实例的概率。

    如果您想在集群中将一个微服务与另一个微服务进行通信,那么您有两种选择:

    1. 通过负载均衡器询问命名服务,然后直接与服务通信。
    2. 如果您确定该服务应该位于集群中的每个节点上 - 您可以直接与 localhost 通信。

    当您想从单独的 vm 从集群的虚拟网络中与集群中的微服务通信时(您可以使用 vpn 将 WebApp 连接到集群)然后您可以通过负载均衡器询问命名服务,但是使用 Service Fabric HTTP API,因为您将无法在未安装 Service Fabric SDK 的 VM 上使用 Service Fabric 类。下面是一个服务解析的例子:https://github.com/lAnubisl/ServiceFabricHttpApiClient

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2017-02-24
      • 2017-09-24
      • 2019-03-13
      • 2019-05-10
      • 2016-09-11
      • 2016-09-30
      • 2021-09-14
      • 2020-01-04
      相关资源
      最近更新 更多