C# 无法将默认服务描述作为升级集EnableDefaultServicesUpgrade设置为true的一部分进行修改
我正在尝试通过Visual Studio升级我的Service Fabric应用程序 最后,我不得不使用diff包方法来确保升级中只有我更改的服务 我通过一个命令文件删除了非必需的文件 现在,我遇到了另一个因缺乏细节而令人恼火的错误:C# 无法将默认服务描述作为升级集EnableDefaultServicesUpgrade设置为true的一部分进行修改,c#,azure-service-fabric,C#,Azure Service Fabric,我正在尝试通过Visual Studio升级我的Service Fabric应用程序 最后,我不得不使用diff包方法来确保升级中只有我更改的服务 我通过一个命令文件删除了非必需的文件 现在,我遇到了另一个因缺乏细节而令人恼火的错误: Start-ServiceFabricApplicationUpgrade : Default service descriptions can not be modified as part of upgrade. Modified 2>default
Start-ServiceFabricApplicationUpgrade : Default service descriptions can not be modified as part of upgrade. Modified
2>default service: fabric:/MYAPPLICATION/MYSERVICE. To allow it, set
2>EnableDefaultServicesUpgrade to true.
我应该把这个放在哪里
请注意,这是来自VisualStudio的
使用PowerShell我很少能得到任何乐趣
我看到了对Update-ServiceFabricsService CmdLet的引用,但是没有更多关于我需要做什么的信息
我已在应用程序清单中尝试此操作,但未成功:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="MyServiceFabricApplication.ServiceFabricType" ApplicationTypeVersion="7.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="EnableDefaultServicesUpgrade" DefaultValue="true" />
<Parameter Name="MyParameter" DefaultValue="value" />
Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service1.ServiceFabricPkg" ServiceManifestVersion="4.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service2.ServiceFabricPkg" ServiceManifestVersion="2.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service3.ServiceFabricPkg" ServiceManifestVersion="3.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service4.ServiceFabricPkg" ServiceManifestVersion="2.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.PlatformApi.ServiceFabricPkg" ServiceManifestVersion="2.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.LivePriceManager.ServiceFabricPkg" ServiceManifestVersion="3.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service5.ServiceFabricPkg" ServiceManifestVersion="3.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="appSettings">
<Parameter Name="MyParameter" Value="[MyParameter]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<DefaultServices>
<Service Name="Service1" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service1.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="Service2" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service2.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="Service3" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service3.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="Service7" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service7.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="Service5" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service5.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="Service6" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service6.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="Service4" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="MyServiceFabricApplication.Service4.ServiceFabricType">
<SingletonPartition />
</StatelessService>
</Service>
</DefaultServices>
</ApplicationManifest>
参数>
保罗首先,在我给你一个解决方案之前,我会给出一个理由
EnableDefaultServicesUpgrade
是一个允许在应用程序升级期间升级默认服务描述的标志。当设置为true时,默认服务描述将被新值覆盖,这是为了防止对描述的意外更改导致可能的故障或数据丢失
- 当设置为false(默认值)时,它将进行检查以防止发生故障
- 当设置为true时,您假定这些更改是安全的
EnableDefaultServicesUpgrade
是集群定义中的标志,而不是服务中的标志。您必须在集群清单中设置此项
您的群集清单将有一个如下所示的部分:
...some stuff above...
{
"name": "ClusterManager",
"parameters": [
{
"name": "EnableDefaultServicesUpgrade",
"value": true
}]
... some more stuf below
}
要在Azure上更改它,请执行以下操作:
您可以使用门户“”,如中所述
在本地群集上:
从群集安装文件夹复制clusterconfig.json
,使用以下命令Start servicefactclusterconfigurationupgrade-clusterconfigurationpath应用更改以触发群集升级。\clusterconfig.json
顺便说一下
您使用的是DefaultServices,您应该避免使用它,关于为什么要使用它,有很多问题。谢谢,我会尝试一下。我的服务都是无状态的。我想做的就是能够在不关闭未受影响的服务的情况下升级集群,他们让这一切看起来像是开箱即用,很好,很简单,但事实并非如此!我不知道默认服务是什么,我只是使用标准服务结构模板进行设置。为了便于学习和开发,您应该避免在生产中使用它,因为存在类似于此的问题。在集群清单上,我假设问题是因为您将实例计数设置为变量,但没有在
部分作为参数传递。好的,我真的不知道从哪里开始不使用DefaultServices这是我第一次听说它们?我已经更正了此处显示的清单。如果我不进行升级就发布,那么只要有正确数量的实例,就可以正常部署。MS经常说的一件重要事情是,您可以升级集群而不影响其他未更改的服务,这就是我正在尝试做的,我将把这标记为已接受的答案谢谢!就像我说的,我对默认/非默认服务一无所知,我将不得不单独研究