【发布时间】: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