是否需要调整服务结构负载均衡器?

时间:2018-09-03 19:17:09

标签: azure azure-service-fabric

有关服务结构的大多数示例表明,部署后,群集端点就像服务清单eg: <cluster-url>:port/api/home一样神奇地显示

论坛上的某些人提到调整负载平衡器以允许访问端口。

为什么意见不同?哪种方法正确? 当我尝试时,我永远无法访问azure群集中的已部署api /端点(是否调整了负载均衡器)。单一框虽然有效。

2 个答案:

答案 0 :(得分:2)

大多数人在构建SF应用程序时会忘记的主要细节是,它们正在构建分布式应用程序,当您在集群中部署一项服务时,您需要找到一种方法,并且在某些情况下它可以在集群中移动,因此解决方案必须能够反映这些分布。

它在本地工作,因为您只有一个终结点(localhost(127.0.0.1)>服务),并且始终可以在其中找到您的应用程序。

在SF上,您命中了一个将映射到负载均衡器的域,该域将映射到一组计算机,并且其中一台计算机可能在其中运行了应用程序 (域> LB IP>节点>服务)。

您需要了解的第一件事是:

  • 您的服务可能不会在负载平衡器后面的所有节点(计算机)上运行,当负载平衡器向该节点发送请求时,如果失败,则LB不会在另一个节点上重试,并且转发这些节点请求到随机节点,并且在大多数情况下,它将打开的连接保持在同一台计算机上。如果您需要在所有节点上运行服务,请将实例计数设置为-1,并且可能只需打开LB上的端口即可看到它正常工作。

  • 每个NodeType前面都有一个负载均衡器,因此,请始终在服务上设置放置约束,以免它在其他未暴露给外部的NodeType上启动

  • 应用程序打开的每个端口的确会在节点上打开,如果需要外部访问,则必须在LoadBalancer中手动打开,或通过脚本打开,SF分配给您的服务的端口应为内部管理,以避免在同一节点上运行的服务之间的端口冲突,SF不会打开LB中的端口以供外部访问。

有很多公开这些服务的方法,您也可以尝试:

  • 向用户提供一个ReverseProxy,就像一个bulti-in,它将代理对集群中已执行的服务的调用一样,
  • 将NGINX用作API网关或反向代理,并将其配置为仅调用特定服务,在这种情况下,您需要向其提供服务地址,因此您需要在服务启动或停止时刷新列表。 / li>
  • 使用Azure API Management公开SF上托管的API

答案 1 :(得分:0)

enter image description here 自定义端点帮助说:“自定义端点允许连接到在此节点类型上运行的应用程序。输入由逗号分隔的端点。”。只能在创建集群时设置。

因此,显然,如果不在此处设置端口,外界将永远无法访问该端口。等等,user felt在2016年也是如此。

由于前面有一个负载平衡器,并且如果我们从端口x(public)到端口y(后端池)放置一个探针,并且如果我们在所有节点的防火墙中都打开了端口y,则它也应该起作用。 How to open port.

如果在servicemanifest中提到端口(例如2345),会发生什么情况?然后,SF为我们在防火墙中打开了一个端口,看起来像这样。并且如果Loadbalancer中有一个指向2345的探针,则它应该可以工作。

enter image description here

因此,除非负载均衡器中有我们手动设置的探针,否则它不起作用。