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

问题描述 投票:0回答:2

关于服务结构的大多数示例显示,在部署之后,群集端点神奇地显示为service-manifest中给出的eg: <cluster-url>:port/api/home

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

为什么意见分歧?哪种方式是正确的?当我尝试时,我始终无法访问azure集群中已部署的api /端点(负载平衡器已调整或未调整)。 OneBox工作了。

azure azure-service-fabric
2个回答
2
投票

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

它在本地工作,因为您有一个端点(localhost(127.0.0.1)> Service),您将始终在那里找到您的应用程序。

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

您需要知道的第一件事是:

  • 当负载均衡器向该节点发送请求时,您的服务可能无法在负载均衡器后面的所有节点(机器)上运行,如果失败,LB不会在另一个节点上重试,并且它会将这些请求转发到随机节点,并且在大多数情况下,它会打开与同一台机器的连接。如果您需要在所有节点上运行您的服务,请将实例计数设置为-1,您可能只需打开LB上的端口即可看到它正常工作。
  • 每个NodeType前面都有一个负载均衡器,因此,始终在服务上设置一个放置约束,以避免它在未向外部暴露的其他NodeType上启动
  • 您的应用程序打开的每个端口都以节点为基础打开,如果您需要外部访问,必须手动在LoadBalancer中打开,或者通过脚本,SF为您的服务分配的端口应在内部进行管理,以避免端口冲突在同一节点上运行的服务之间,SF不会打开LB中的端口以进行外部访问。

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

  • 用户使用ReverseProxy,就像将代码调用集群中的服务apread的bulti-in一样,无论它们在哪里都无关紧要。
  • 使用NGINX作为API网关或反向代理,并将其配置为仅调用特定服务,在这种情况下,您需要为其提供服务地址,因此您需要在服务启动或停止时刷新列表。
  • 使用Azure API Management来暴露SF上托管的API

0
投票

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

显然没有在这里设置端口,外面的世界永远无法访问该端口。或者这就是2016年的user felt

由于前面有一个负载均衡器,如果我们将端口x(公共)的探测器放到端口y(后端池),如果我们在所有节点的防火墙中打开端口y,那么它也应该工作。 How to open port.

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

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.