Обновление публикации Azure Service Fabric из Visual Studio - ошибка сценария PowerShell - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь опубликовать обновление приложения Service Fabric с Visual Studio 2017 до нашего кластера Azure Service Fabric.В середине сентября я успешно опубликовал обновление этого же приложения с тем же сценарием 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 ==========

Есть идеи, что здесь происходит?Опять же, когда я в последний раз опубликовал это в сентябре с тем же сценарием, никаких проблем вообще не было, и я не внес никаких изменений в решение, кроме обновления версий Manifest, чтобы выдать его как новую обновленную версию.

Я отметил этот поток S / O: Получение ошибки как часть попытки обновить приложение Service Fabric с помощью Start-ServiceFabricApplicationUpgrade и увидел, что ошибка пользователя была похожей, но ответ не относится к моей проблеме, потому чтовсе три шага в ответе, безусловно, включены в мой сценарий развертывания powershell.

Я могу добавить сценарий развертывания, если это будет полезно, но буду ждать, пока он не будет запрошен, так как он длинный, и я только хочу опубликовать его здесьесли кто-то считает, что это необходимо для диагностики.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Проблема была в том, что мы пытались вытолкнуть приложение с несовпадающими экземплярами узлов.У нас есть служба с состоянием, работающая под этим приложением, для которой MinReplicaSize и TargetReplicaSize должны быть установлены на 3. Вчера из-за проблемы мы удалили и заново создали эту службу в SF Explorer.После этого он сбросил параметры размера реплики обратно на 1. Таким образом, мы использовали сценарий Powershell, чтобы изменить их обратно на 3, но этот сценарий не включал все необходимые команды, чтобы вернуть службу в то состояние, в котором она находилась до этого.мы удалили это.Поэтому сегодня, когда мы пошли на обновление приложения, приложение в SFC не приняло обновление от развертывания VS из-за несоответствия между параметрами решения и тем, что было в нашем SFC.Чтобы решить эту проблему, мы сначала удалили эти службы, затем развернули из VS, и больше никаких ошибок.

0 голосов
/ 11 октября 2018

Вы получаете эту ошибку, потому что вы изменяете некоторые параметры в DefaultService, которые не разрешены по умолчанию.

Ссылка aka.ms / upgrade-defaultservices , показанная в журналах ошибокобъясните это.

Некоторые параметры службы по умолчанию, определенные в манифесте приложения, также можно обновить в рамках обновления приложения.

В рамках обновления могут быть изменены только те параметры службы, которые поддерживают изменение через Update-ServiceFabricService.Смена служб по умолчанию во время обновления приложения выглядит следующим образом:

  1. Службы по умолчанию в новом манифесте приложения, которые еще не существуют в кластере, создаются.
  2. Службы по умолчанию, которые существуюткак в предыдущем, так и в новом приложении манифесты обновляются.Параметры службы по умолчанию в новом манифесте приложения перезаписывают параметры существующей службы.При сбое обновления службы по умолчанию обновление приложения будет выполнено автоматически.
  3. Службы по умолчанию, которых нет в новом манифесте приложения, удаляются, если они существуют в кластере.Обратите внимание, что удаление службы по умолчанию приведет к удалению всего состояния этой службы и не может быть отменено.

Кроме того, есть еще один вопрос о том же: Описания службы по умолчаниюне может быть изменено как часть обновления. Установите EnableDefaultServicesUpgrade на true

Приведенный выше элемент 1 является распространенным подходом, в котором новые услуги добавляются в решение, а затем создаются во время обновления без ошибок, элемент 2.и 3 - ограниченный подход, который требует EnableDefaultServicesUpgrade.

Пункт 2, как описано в добавленном вами ответе, вы изменили MinReplicaSize и TargetReplicaSize на 1 во время обновления вручную,Когда SF проверил состояние вашей службы для обновления, он определил разницу и не позволил продолжить обновление, если вы установили для кластера EnableDefaultServicesUpgrade значение true, он продолжит работу и переопределит значения по умолчанию.

Пункт 3 возникнет у вас, когда вы удалите сервис и добавите снова, вы изменили или неправильно написалиКак следует из названия, настройки SF по умолчанию предотвратят удаление этой службы.

Что касается решения, которое вы нашли (удаление и воссоздание), не является идеальным, в случаях, когда у вас есть службы с состоянием, работающие в рабочей среде,рискованно применять, потому что вам придется делать резервную копию состояния, повторно развертывать службы и восстанавливать резервную копию, в некоторых случаях, в зависимости от того, что это за изменения, вы не сможете восстановить резервную копию, потому что они имеютсоответствовать исходным определениям сервисов (тип раздела, номер и сын на).Вы также потеряете преимущества Rolling Updates, и, если объем этих резервных копий будет большим, ваше обслуживание может быть приостановлено на некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...