Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure service fabric Azure服务结构从Visual Studio发布升级-PowerShell脚本错误_Azure Service Fabric - Fatal编程技术网

Azure service fabric Azure服务结构从Visual Studio发布升级-PowerShell脚本错误

Azure service fabric Azure服务结构从Visual Studio发布升级-PowerShell脚本错误,azure-service-fabric,Azure Service Fabric,我正在尝试将Service Fabric应用程序从Visual Studio 2017发布到我们的Azure Service Fabric群集。9月中旬,我成功地用相同的PowerShell脚本将同一个应用程序升级到了SFC,没有任何问题。我现在正试图升级到下一个版本号,突然出现了这个错误 我在发布过程中遇到以下错误,与Powershell相关 2>Started executing script 'Deploy-FabricApplication.ps1'. 2>powershel

我正在尝试将Service Fabric应用程序从Visual Studio 2017发布到我们的Azure Service Fabric群集。9月中旬,我成功地用相同的PowerShell脚本将同一个应用程序升级到了SFC,没有任何问题。我现在正试图升级到下一个版本号,突然出现了这个错误

我在发布过程中遇到以下错误,与Powershell相关

2>Started executing script 'Deploy-FabricApplication.ps1'.
2>powershell -NonInteractive -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command ". 'C:\Users\pj\Source\Workspaces\VDevelopment\trunk\Services\Sources\src\For.Application.ServiceFabric.Sources\Scripts\Deploy-FabricApplication.ps1' -ApplicationPackagePath 'C:\Users\pj\Source\Workspaces\VDevelopment\trunk\Services\Sources\src\For.Application.ServiceFabric.Sources\pkg\Debug' -PublishProfileFile 'C:\Users\pj\Source\Workspaces\VDevelopment\trunk\Services\Sources\src\For.Application.ServiceFabric.Sources\PublishProfiles\Cloud.xml' -DeployOnly:$false -ApplicationParameter:@{} -UnregisterUnusedApplicationVersionsAfterUpgrade $false -OverrideUpgradeBehavior 'None' -OverwriteBehavior 'SameAppTypeAndVersion' -SkipPackageValidation:$false -ErrorAction Stop"
2>Copying application package to image store...
2>Upload to Image Store succeeded
2>Registering application type...
2>Register application type started. Use Get-ServiceFabricApplicationType to query for status.
2>Running Image Builder process ...
2>Application package is registered.
2>Start upgrading application...
2>aka.ms/upgrade-defaultservices
2>Start-ServiceFabricApplicationUpgrade : aka.ms/upgrade-defaultservices
2>At C:\Program Files\Microsoft SDKs\Service 
2>Fabric\Tools\PSModule\ServiceFabricSDK\Publish-UpgradedServiceFabricApplication.ps1:317 char:13
2>+             Start-ServiceFabricApplicationUpgrade @UpgradeParameters
2>+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2>    + CategoryInfo          : InvalidOperation: (Microsoft.Servi...usterConnection:ClusterConnection) [Start-ServiceFa 
2>   bricApplicationUpgrade], FabricException
2>    + FullyQualifiedErrorId : UpgradeApplicationErrorId,Microsoft.ServiceFabric.Powershell.StartApplicationUpgrade
2> 
2>Finished executing script 'Deploy-FabricApplication.ps1'.
2>Time elapsed: 00:07:39.0407526
2>The PowerShell script failed to execute.
========== Build: 1 succeeded, 0 failed, 10 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
知道这是怎么回事吗?同样,当我上一次在9月份发布这篇文章时,使用了相同的脚本,没有任何问题,而且除了升级清单版本以将其作为新的升级版本推出之外,我没有对解决方案进行任何更改

我注意到这个S/O线程:并看到用户的错误与此类似,但答案不适用于我的问题,因为提供的答案中的所有三个步骤都肯定包含在我的powershell部署脚本中


如果有帮助,我可以添加部署脚本,但会等待请求,因为它很长,我只想在有人认为需要诊断时在这里发布它。

您遇到此错误,因为您正在更改默认服务中不允许的某些参数

错误日志中显示的链接解释了这一点

应用程序清单中定义的某些默认服务参数 也可以作为应用程序升级的一部分进行升级

仅支持通过更改的服务参数 更新ServiceFabricsService可以作为升级的一部分进行更改。这个 应用程序升级期间更改默认服务的行为如下 如下:

  • 将创建集群中不存在的新应用程序清单中的默认服务
  • 更新先前和新应用程序清单中存在的默认服务。默认设置的参数 新应用程序清单中的服务覆盖 现有的服务。应用程序升级将回滚 在更新默认服务失败时自动执行
  • 如果集群中存在新应用程序清单中不存在的默认服务,则会将其删除。请注意,删除默认值 服务将导致删除该服务的所有状态,并且无法删除 撤消
  • 还有一个关于同一件事的问题:

    上面的第1项是一种常见方法,在这种方法中,新服务被添加到解决方案中,随后在升级过程中创建,没有错误。第2项和第3项是受限制的方法,需要启用默认服务升级

    第2项,如您添加的答案中所述,您在手动更新期间将
    MinReplicaSize
    TargetReplicaSize
    更改为1,当SF验证您的升级服务状态时,它识别了差异并阻止升级继续,如果您已将群集设置
    EnableDefaultServicesUpgrade
    设置为
    true
    ,它将继续并覆盖默认值

    当您删除服务并再次添加时,如果您更改或拼错了名称,则会出现第3项,SF默认设置将阻止删除此服务

    关于您找到的解决方案(删除并重新创建),这并不理想,
    在生产环境中运行有状态服务的情况下,应用这些服务会有风险,因为您必须备份状态、重新部署服务并恢复备份。在某些情况下,根据这些更改的内容,您将无法恢复备份,因为它们必须与原始服务定义相匹配(分区类型、编号和子分区打开)。您还将失去滚动更新的好处,如果这些备份很大,您的服务可能会停止一段时间。

    您遇到此错误,因为您正在更改默认服务中不允许的某些参数

    错误日志中显示的链接解释了这一点

    应用程序清单中定义的某些默认服务参数 也可以作为应用程序升级的一部分进行升级

    仅支持通过更改的服务参数 更新ServiceFabricsService可以作为升级的一部分进行更改 应用程序升级期间更改默认服务的行为如下 如下:

  • 将创建集群中不存在的新应用程序清单中的默认服务
  • 更新先前和新应用程序清单中存在的默认服务 新应用程序清单中的服务覆盖 现有服务。应用程序升级将回滚 在更新默认服务失败时自动执行
  • 新应用程序清单中不存在的默认服务将被删除(如果它们存在于群集中)。请注意,删除默认服务 服务将导致删除该服务的所有状态,并且无法删除 撤消
  • 还有一个关于同一件事的问题:

    上面的第1项是一种常见方法,在这种方法中,新服务被添加到解决方案中,随后在升级过程中创建,没有错误。第2项和第3项是受限制的方法,需要启用默认服务升级

    第2项,如您添加的答案中所述,在手动更新过程中,您将
    MinReplicaSize
    TargetReplicaSize
    更改为1,当SF验证要升级的服务状态时,如果您设置了群集设置
    启用默认服务,它会识别差异并阻止升级继续pgrade
    true
    它将继续并覆盖默认值

    当您删除服务并再次添加时,如果您更改或拼错了名称,则会出现第3项,SF默认设置将阻止