【问题标题】:Service Fabric Application settings not being overriden by Application Manifest parametersService Fabric 应用程序设置未被应用程序清单参数覆盖
【发布时间】:2019-04-03 09:21:46
【问题描述】:

需要一些帮助来了解为什么 Service Fabric 应用程序的配置设置没有按预期被应用程序清单中定义的值覆盖。目前,我为我的两个不同环境定义了一些设置:默认设置用于最终的 Azure 集群,我有一个用于本地开发集群的自定义发布配置文件。

低于我对每个文件的要求:

SampleServFabricApp/ApplicationPackageRoot/ApplicationManifest.xml

<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="SampleServFabricAppType" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateFindValue" DefaultValue="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
    <Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames" DefaultValue="*.thefinaldomain.com" />
    <Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints" DefaultValue="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
    <Parameter Name="SampleServFabricApp_PartitionCount" DefaultValue="10" />
    <Parameter Name="SampleServFabricApp_MinReplicaSetSize" DefaultValue="3" />
    <Parameter Name="SampleServFabricApp_TargetReplicaSetSize" DefaultValue="3" />
  </Parameters>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="SampleServFabricApp.EndpointPkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="SampleServFabricApp_MessageTransportConfig">
            <Parameter Name="CertificateFindValue" Value="[SampleServFabricApp_MessageTransportConfig_CertificateFindValue]" />
            <Parameter Name="CertificateRemoteCommonNames" Value="[SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames]" />
            <Parameter Name="CertificateRemoteThumbprints" Value="[SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <DefaultServices>
    <Service Name="SampleServFabricAppActorService" GeneratedIdRef="e07529c2-2426-4065-b621-90033a78704c|Persisted">
      <StatefulService ServiceTypeName="SampleServFabricAppActorServiceType" TargetReplicaSetSize="[SampleServFabricApp_TargetReplicaSetSize]" MinReplicaSetSize="[SampleServFabricApp_MinReplicaSetSize]">
        <UniformInt64Partition PartitionCount="[SampleServFabricApp_PartitionCount]" LowKey="-9223372036854775808" HighKey="9223372036854775807" />
      </StatefulService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

SampleServFabricApp/ApplicationParameters/dev_cluster.xml

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SampleServFabricApp" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateFindValue" Value="4826f9a3ac95bca949fab19ea136e197" />
    <Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames" Value="ServiceFabricDevClusterCert" />
    <Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints" Value="4826f9a3ac95bca949fab19ea136e197" />
  </Parameters>
</Application>

SampleServFabricApp.Endpoint/PackageRoot/Config/Settings.xml

<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Section Name="SampleServFabricApp_MessageTransportConfig">
    <Parameter Name="MaxMessageSize" Value="10000000" />
    <Parameter Name="SecurityCredentialsType" Value="X509" />
    <Parameter Name="CertificateFindType" Value="FindByThumbprint" />
    <Parameter Name="CertificateFindValue" Value="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
    <Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
    <Parameter Name="CertificateStoreName" Value="My" />
    <Parameter Name="CertificateProtectionLevel" Value="EncryptAndSign" />
    <Parameter Name="CertificateRemoteCommonNames" Value="*.thefinaldomain.com" />
    <Parameter Name="CertificateRemoteThumbprints" Value="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
  </Section>
</Settings>

将应用程序发布到本地集群时,我可以在输出中看到创建应用程序时的日志,并且参数似乎正常:

2>正在创建应用程序... 2> 2> 2>ApplicationName : 织物:/SampleServFabricApp 2>ApplicationTypeName : SampleServFabricAppType 2>ApplicationTypeVersion:1.0.0 2>应用参数:{ “SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints” = 2> "4826f9a3ac95bca949fab19ea136e197"; 2>“SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames” = 2> "ServiceFabricDevClusterCert"; 2> "SampleServFabricApp_MessageTransportConfig_CertificateFindValue" = 2>“4826f9a3ac95bca949fab19ea136e197”; } 2> 2>创建应用成功。

但是使用服务资源管理器,我可以看到在应用程序启动期间发生了错误,如果我检查事件日志,我可以看到以下错误:

未能将安全设置设置为 { provider=SSL protection=EncryptAndSign certType = '' store='LocalMachine/My' findValue='FindByThumbprint:e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764' remoteCertThumbprints='e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764' remoteX509Names=('*.thefinaldomain.com',issuer=) certChainFlags=40000000 isClientRoleInEffect=false claimBasedClientAuthEnabled=false }: FABRIC_E_CERTIFICATE_NOT_FOUND

我已经尝试过的一些事情: - 使用 Service Fabric explorer 并确认应用程序 Details 选项卡下的 Parameters 正确,并与根据 Output 窗口发送到部署脚本的参数匹配; - 确认“C:\SfDevCluster\Data_App_Node_0\SampleServFabricAppType_App18\SampleServFabricApp.EndpointPkg.Config.1.0.0”下的“Settings.xml”文件的内容等于“SampleServFabricApp.Endpoint/PackageRoot/Config/”的内容设置.xml";

知道这是一个错误还是它遗漏了我真正看不到的东西? 如您所见,部署过程似乎假定了正确的覆盖值,但应用程序不起作用,事件查看器显示默认值而不是部署期间使用的值。

谢谢。

【问题讨论】:

  • 您是在创建新应用程序还是在执行升级?
  • 你也可以分享ServiceManifest.xml吗?
  • 连续第三条评论但是,您是否也可以检查C:\SfDevCluster\Data\_App\_Node_0\SampleServFabricAppType_App18\* .Package. * .xml文件是否包含所需的值?它们应该等于来自SampleServFabricApp/ApplicationParameters/dev_cluster.xml 的值。
  • @OlegKarasik 这发生在创建新应用程序期间。 Package.xml 文件确实包含正确的设置。与此同时,我在 GitHub repo 上得到了回复。请检查下面的答案。感谢 cmets

标签: azure-service-fabric service-fabric-stateful


【解决方案1】:

我刚刚收到了对我在 GitHub 上打开的问题的回复。似乎所描述的行为是已知的,它将在 SDK 3.3 版本中得到修复。对于所有可能想要检查它的人,您可以找到问题here

【讨论】:

  • 很高兴知道他们会修复它!
猜你喜欢
  • 1970-01-01
  • 2017-10-01
  • 2019-08-11
  • 2020-01-29
  • 2016-11-23
  • 2016-07-26
  • 2016-09-29
  • 1970-01-01
  • 2016-07-21
相关资源
最近更新 更多