Azure service fabric 服务结构反向代理有状态服务端口设置

Azure service fabric 服务结构反向代理有状态服务端口设置,azure-service-fabric,Azure Service Fabric,我已经成功地将集群部署到azure,在所有节点上启用了反向代理,并且https工作正常。这是一个多租户集群,每个租户都有自己的应用程序,一些有状态服务将能够管理一些Web套接字 我设法得到了一个kestrel在websockets本地工作的实例,但在Azure中我只得到了404。我认为我的端口配置是错误的。我已经阅读了所有的反向代理文档,但仍然无法理解其中的一些内容 Q1有状态服务上希望从反向代理接收消息的所有侦听器都必须在19081上侦听吗?我本以为是这样的,但该程序随机地将一个不同的端口(1

我已经成功地将集群部署到azure,在所有节点上启用了反向代理,并且https工作正常。这是一个多租户集群,每个租户都有自己的应用程序,一些有状态服务将能够管理一些Web套接字

我设法得到了一个kestrel在websockets本地工作的实例,但在Azure中我只得到了404。我认为我的端口配置是错误的。我已经阅读了所有的反向代理文档,但仍然无法理解其中的一些内容

Q1有状态服务上希望从反向代理接收消息的所有侦听器都必须在19081上侦听吗?我本以为是这样的,但该程序随机地将一个不同的端口(10592?)和一个超长id作为某种标识符(我相信这是partitionId和replicaId的组合),而没有解释如何将名称映射到命名服务中的侦听端口

作为一个例子,让我们以结构:/MyApp/MyService服务为例 在以下URL上打开HTTP侦听器:

我应该用这个超长的id作为监听地址吗?我想这意味着kestrel退出了——因为多个kestrel可能会尝试在同一个节点上侦听,但我可能会使用Web/Http侦听器,以便共享端口

Q2如果我希望服务只侦听反向代理,则必须创建侦听器ListenerName似乎是URI格式中用于寻址服务的必要参数。在这种情况下,是否无法调用动态生成的主机?(例如WCF服务主机)正在侦听生成的路径

很高兴发布(破坏的)代码,但我认为这更多的是一个概念问题,一旦我更好地理解了限制/底层架构,我就可以自己解决它


关于

您看到有状态服务的超长URL的原因是,在许多情况下,同一节点上会有多个分区和副本。默认示例/模板可能执行以下约定:

http://+:port/partition/replica/newGuid
考虑以下情况:您有一个有状态服务,它有两个分区,两个分区都有一个主副本和两个辅助副本

Partition 1: 2446223d-5998-45f3-90fc-2d9705bedb1d
Partition 2: 7af3a1f0-7845-4003-b192-6a8b64cc47fd
您可以设置辅助副本以打开通信。如果您仅使用分区id作为侦听地址,那么您将具有以下内容:

http://10.10.10.1:19081/2446223d-5998-45f3-90fc-2d9705bedb1d (Primary)
http://10.10.10.1:19081/2446223d-5998-45f3-90fc-2d9705bedb1d (Secondary)
http://10.10.10.1:19081/2446223d-5998-45f3-90fc-2d9705bedb1d (Secondary)
http://10.10.10.1:19081/7af3a1f0-7845-4003-b192-6a8b64cc47fd (Primary)
http://10.10.10.1:19081/7af3a1f0-7845-4003-b192-6a8b64cc47fd (Secondary)
http://10.10.10.1:19081/7af3a1f0-7845-4003-b192-6a8b64cc47fd (Secondary)

在五节点集群中,您将在单个节点上使用相同的侦听器,因此这是一个冲突。因此,您需要通过添加其他内容使其更加独特。无状态web api模板中的默认
OwinCommunicationListener
实现将使用分区ID、复制ID和随机guid。我不认为分区+副本足够唯一,所以他们会在路径中添加随机guid。

我想你是对的,我所讨论的服务都是SingletonPartitions,所以我不必担心冲突。我是否应该用长id而不是解析的名称监听此url?例如,一个客户端将调用mycluster:19081/MyApp/->但在服务中我应该监听https://:19081//MyEndpoint?因为代理就是这么翻译的?或者这是完全错误的当你打开通讯时,你仍然会使用常规的监听地址奇怪的是,如果我使用更长的监听地址,它只会在所有节点上工作,但它现在工作得很好。谢谢你的帮助