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