有关服务结构的大多数示例表明,部署后,群集端点就像服务清单eg: <cluster-url>:port/api/home
一样神奇地显示
论坛上的某些人提到调整负载平衡器以允许访问端口。
为什么意见不同?哪种方法正确? 当我尝试时,我永远无法访问azure群集中的已部署api /端点(是否调整了负载均衡器)。单一框虽然有效。
答案 0 :(得分:2)
大多数人在构建SF应用程序时会忘记的主要细节是,它们正在构建分布式应用程序,当您在集群中部署一项服务时,您需要找到一种方法,并且在某些情况下它可以在集群中移动,因此解决方案必须能够反映这些分布。
它在本地工作,因为您只有一个终结点(localhost(127.0.0.1)>服务),并且始终可以在其中找到您的应用程序。
在SF上,您命中了一个将映射到负载均衡器的域,该域将映射到一组计算机,并且其中一台计算机可能在其中运行了应用程序 (域> LB IP>节点>服务)。
您需要了解的第一件事是:
您的服务可能不会在负载平衡器后面的所有节点(计算机)上运行,当负载平衡器向该节点发送请求时,如果失败,则LB不会在另一个节点上重试,并且转发这些节点请求到随机节点,并且在大多数情况下,它将打开的连接保持在同一台计算机上。如果您需要在所有节点上运行服务,请将实例计数设置为-1,并且可能只需打开LB上的端口即可看到它正常工作。
每个NodeType前面都有一个负载均衡器,因此,请始终在服务上设置放置约束,以免它在其他未暴露给外部的NodeType上启动
应用程序打开的每个端口的确会在节点上打开,如果需要外部访问,则必须在LoadBalancer中手动打开,或通过脚本打开,SF分配给您的服务的端口应为内部管理,以避免在同一节点上运行的服务之间的端口冲突,SF不会打开LB中的端口以供外部访问。
有很多公开这些服务的方法,您也可以尝试:
答案 1 :(得分:0)
自定义端点帮助说:“自定义端点允许连接到在此节点类型上运行的应用程序。输入由逗号分隔的端点。”。只能在创建集群时设置。
因此,显然,如果不在此处设置端口,外界将永远无法访问该端口。等等,user felt在2016年也是如此。
由于前面有一个负载平衡器,并且如果我们从端口x(public)到端口y(后端池)放置一个探针,并且如果我们在所有节点的防火墙中都打开了端口y,则它也应该起作用。 How to open port.
如果在servicemanifest中提到端口(例如2345),会发生什么情况?然后,SF为我们在防火墙中打开了一个端口,看起来像这样。并且如果Loadbalancer中有一个指向2345的探针,则它应该可以工作。
因此,除非负载均衡器中有我们手动设置的探针,否则它不起作用。