【问题标题】:Address of REST API hosted on service fabric托管在服务结构上的 REST API 的地址
【发布时间】:2020-10-12 19:50:48
【问题描述】:

假设我有一个在服务结构中运行的无状态服务,并且我的服务结构集群中有 5 个节点。现在由于集群中的每个节点都有一个无状态服务实例,这意味着我的无状态服务将在 5 个节点上存在 5 个实例。

但是由于每个节点都有不同的 IP 地址和端口号来托管服务,因此可以有多个不同的端点地址来托管我的服务。

现在我的服务实际上是一个 REST API,提供了一些简单的功能。 现在我在 servicemanifest.xml 文件中将端口号设置为 8080。

现在我的问题是,是否在 servicemanifest.xml 中专门设置端口号会禁用动态选择端口?这是否会使集群上的每个节点使用相同的端口,即服务端点地址中的 8080?

另一个问题是,如果服务转移到另一台机器并部署在那里,如果集群上的其他服务已经在使用相同的端口,即 8080,那么将 8080 作为端口可能会导致冲突?

我们如何让客户端知道我的 API 托管在哪个端点地址?

【问题讨论】:

    标签: azure azure-service-fabric endpoint rest


    【解决方案1】:

    是否在 servicemanifest.xml 中专门设置端口号禁用 动态选择端口?

    是的

    这会使集群上的每个节点都使用相同的端口,即 8080 服务的端点地址?

    是的,如果您将实例计数设置为 -1,所有节点都将在该端口运行服务。您可以使用外部负载均衡器(服务外部)或直接在节点 IP/localhost(服务到服务)上调用它们。

    如果服务转移到另一台机器并在那里部署 如果其他服务开启,将 8080 作为端口可能会导致冲突 它的集群已经在使用相同的端口,即 8080?

    在同一个应用程序中,1 个节点上的 1 个无状态服务实例永远不会超过 1 个。 SF 会处理这个问题。但是,如果另一个服务正在使用该端口,则它不能被另一个服务使用,除非您使用支持port sharing 的服务器,例如 http.sys。

    要处理端口冲突,请查看built-in 反向代理或Traefik。使用反向代理消除了管理端口的麻烦,并允许您通过应用程序和服务名称调用您的服务。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多