如何为现有的内部部署群集配置和启用Azure Service Fabric反向代理?

Cyb*_*onk 15 configuration web-services reverse-proxy azure azure-service-fabric

Azure服务结构反向代理是否可在内部部署群集中使用?如果是这样,我如何为现有群集启用它?

此处描述 Service Fabric Reverse Proxy .它允许群集外部的客户端通过名称使用特殊URL访问应用程序服务,而无需知道运行服务实例的确切主机:端口(可能会随着服务自动移动而更改).

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

即,这工作:

http://fqdn:20001/api/odata/v1/$metadata
Run Code Online (Sandbox Code Playgroud)

但这不是:

http://fqdn:19008/MyApp/MyService/api/odata/v1/$metadata
Run Code Online (Sandbox Code Playgroud)

在用于设置我的本地群集的ClusterConfig JSON的NodeTypes部分中,有一个属性"httpGatewayEndpointPort":"19080",但该端口似乎不能用作反向代理(它是Service Fabric Explorer Web -app endpoint).我猜测在集群配置JSON中以某种方式指定了所需的配置.还有的说明书中引用的文章解释了如何配置在云中的反向代理,而不是本地.

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

Cyb*_*onk 14

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

要使其适用于现有群集,必须在群集配置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>
Run Code Online (Sandbox Code Playgroud)

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

http://localhost:19081/MyApp/MyService/api/odata/v1/$metadata
Run Code Online (Sandbox Code Playgroud)

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

为了让反向代理在"真正的"多机(VM)集群上工作,我做了以下(注意:我不认为升级集群代码包是必要的,但因为我的图像存储中没有任何内容对于集群升级,集群升级过程需要代码包,我使用的是最新版本):

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

在NodeType Endpoints部分,添加:

<NodeTypes>
    <NodeType Name="NodeType0">
      <Endpoints>
        <HttpApplicationGatewayEndpoint Port="19081" Protocol="http" />
        ...
      </Endpoints>
    </NodeType>
</NodeTypes>
Run Code Online (Sandbox Code Playgroud)

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

<Section Name="ApplicationGateway/Http">
  <Parameter Name="IsEnabled" Value="true" />
</Section>
Run Code Online (Sandbox Code Playgroud)
  1. 使用Service Fabric PowerShell命令:

    • 将新的群集配置(以前复制的manifest.xml)复制到结构映像存储
    • 注册新的群集配置
    • 将Service Fabric Runtime集群代码包(此处提供 - 请参阅MSI链接的发行说明)复制到映像存储
    • 注册集群代码包
    • 启动并完成集群升级(我使用了不受监控的手动模式,它一次只能运行一个VM,并且在每个节点完成后需要手动恢复命令)

集群升级完成后,我可以使用反向代理端点和appname/servicename URL语法查询我的服务API:

http://fqdn:19081/MyApp/MyService/api/odata/v1/$metadata
Run Code Online (Sandbox Code Playgroud)