我在Service Fabric解决方案中有一个无状态API服务,我希望将此服务仅固定到我的群集上的两个节点中的一个节点。
如何将API服务限制为仅在一个节点上生效? 主要问题是每个节点都有自己的URL,如果服务跳转到另一个节点,则用户无法连接到API。
谢谢!
答案 0 :(得分:3)
我不确定每个群集中不能有多个无状态Web API的概念来自何处,但我怀疑您正在考虑本地开发机器。
在生产群集中,您可以为每个节点托管数十个无状态Web API应用程序,它们可以共享相同的IP和端口,并且它们可以显示为一个逻辑API表面。
在本地开发群集中,每个群集在同一个IP和端口上只能有一个Web API实例,因为它只有一个物理计算机(您的开发框)。
您可以使用“应用程序参数”和发布配置文件来解决此问题。
云的发布配置文件使用设置-1,表示在所有节点上运行。
ApplicationParameters \ Cloud.xml - [Parameter Name =“TokenExchange_InstanceCount”Value =“ - 1”/]
本地开发的发布配置文件使用设置1,这意味着在一个节点上运行。
ApplicationParameters \ Local.xml - [Parameter Name =“TokenExchange_InstanceCount”Value =“1”/]
如果多个API共享相同的IP和端口,则需要通过端点URL区分应用程序 - 例如,通过向URL添加其他段
_serverUrl = $“{endpoint.Protocol}:// +:{endpoint.Port} / foo / bar / ”;
答案 1 :(得分:0)
要回答您遇到的问题(根据上面的评论),不回复原始问题(不推荐的行为),您需要在负载均衡器中解决此问题。 将所有webapi节点类型的ip-addresses添加到负载均衡器的“后端池”(每个节点类型一个)。 此外,更新您的设置以部署到多个节点,如上所述,将实例计数设置为-1。