web-services - 如何为现有本地群集配置和启用 Azure Service Fabric 反向代理?

标签 web-services azure configuration reverse-proxy azure-service-fabric

Azure Service Fabric 反向代理是否在本地群集中可用?如果是这样,我如何为现有集群启用它?

Service Fabric 反向代理描述 here 。它允许集群外部的客户端通过名称和特殊 URL 访问应用程序服务,而无需知道运行服务实例的确切主机:端口(随着服务自动移动,该端口可能会发生变化)。

默认情况下,具有两个无状态服务实例的本地集群似乎未启用 Service Fabric 反向代理。我尝试使用 documented端口 19008,但无法使用推荐的 URI 语法访问该服务。

也就是说,这有效:

http://fqdn:20001/api/odata/v1/$metadata

但这不是:

http://fqdn:19008/MyApp/MyService/api/odata/v1/$metadata

在用于设置本地集群的 ClusterConfig JSON 的 NodeTypes 部分中,有一个属性“httpGatewayEndpointPort”:“19080”,但该端口似乎不能用作反向代理(它是服务) Fabric Explorer Web 应用程序端点)。我猜测所需的配置是在集群配置 JSON 中以某种方式指定的。 referenced article中有说明解释了如何在云中而不是在本地配置反向代理。

我正在寻找有关如何在本地多机群集或开发群集中设置 Service Fabric 反向代理的说明。

最佳答案

是的,反向代理可在本地使用。

要使其适用于现有集群,必须在集群配置 XML 中配置并启用它,然后必须部署新配置,如下所述。

对于新集群,请在创建集群之前在集群配置 JSON 中进行设置,如 @Scott Weldon 所述。

@Senj 提供了线索(谢谢!),让我找到了答案。我最近将开发盒上的 Service Fabric 位更新为 5.1.163.9590。当我查看 C:\SfDevCluster\Data\FabricHostSettings.xml 时,我注意到以下内容:

 <Section Name="FabricNode">
    ...
    <Parameter Name="NodeVersion" Value="5.1.163.9590:1.0:0" />
    ...
    <Parameter Name="HttpApplicationGatewayListenAddress" Value="19081" />
    <Parameter Name="HttpApplicationGatewayProtocol" Value="http" />
    ...
  </Section>

有趣!随着开发集群启动,我浏览到:

http://localhost:19081/MyApp/MyService/api/odata/v1/$metadata

瞧!我的 API 返回了预期的数据。所以@Senj 是正确的,它与 HttpApplicationGateway 设置有关。我猜测在最新的 SDK 版本中它是预先配置并默认启用的。 (让我失望的是所有文档都引用端口 19008,但实际配置的端口是 19081!)

为了让反向代理在“真正的”多机(VM)集群上工作,我执行了以下操作(注意:我不认为升级集群代码包是必要的,但因为我没有任何东西)我的镜像存储用于集群升级,集群升级过程需要代码包,我用的是最新版本):

  1. 复制现有集群 list (从 Service Fabric Explorer 中的“ list ”选项卡),粘贴到新的 XML 文件中,更改版本号并进行如下修改:

在 NodeType Endpoints 部分中,添加:

<NodeTypes>
    <NodeType Name="NodeType0">
      <Endpoints>
        <HttpApplicationGatewayEndpoint Port="19081" Protocol="http" />
        ...
      </Endpoints>
    </NodeType>
</NodeTypes>

<FabricSettings>下,添加以下部分:

<Section Name="ApplicationGateway/Http">
  <Parameter Name="IsEnabled" Value="true" />
</Section>
  • 使用 Service Fabric PowerShell 命令:

    • 将新的集群配置(之前复制的manifest.xml)复制到结构镜像存储
    • 注册新的集群配置
    • 将 Service Fabric 运行时群集代码包(可用 here - 请参阅 release notes 以获取 MSI 的链接)到镜像存储
    • 注册集群代码包
    • 开始并完成集群升级(我使用不受监控的手动模式,一次执行一个虚拟机,并且在每个节点完成后需要手动恢复命令)
  • 集群升级完成后,我可以使用反向代理端点和 appname/servicename URL 语法查询我的服务 API:

    http://fqdn:19081/MyApp/MyService/api/odata/v1/$metadata
    

    关于web-services - 如何为现有本地群集配置和启用 Azure Service Fabric 反向代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881031/

    相关文章:

    configuration - 如何从 ack 结果中排除评论?

    android - 从 Android 中的 SOAP 网络服务获取响应

    sql-server - 在 Azure SQL 上创建的每个新数据库上创建一个已知登录名的用户?

    azure - 如何从 Startup.cs 中访问 KeyVault Secret 值(适用于 Serilog SQL Sink)

    c# - 具有非 ConfigurationElement 属性的自定义配置部分

    reactjs - React/Next.js推荐的后端API URL等常量设置方式

    .net - 从 SharePoint Webpart 调用 .NET Web 服务时如何模拟用户?

    java - 在Mustang(Java 1.6 sdk)中创建和发布Web服务的问题

    ajax - 如何在ajax中调用RESTful Web服务?

    ruby-on-rails - Ruby-Thin 服务器在生产中随机崩溃