К сожалению, в Service Fabric нет механизма планирования, позволяющего выполнять подобные операции.
Решение для вас - запустить скрипт, который подключается к SF и выполняет пакет перезапуска кода .через powershell или через API .
Для powershell вы можете использовать Runbook автоматизации Azure или использовать функции Azure для вызова API врасписание.
Я думаю, что PowerShell проще, но оба должны работать.
Restart-ServiceFabricDeployedCodePackage , как следует из названия, заставитзавершите работу и перезапустите процесс и все реплики, размещенные в нем.Нет необходимости удалять и создавать заново, вы можете пропустить настройку службы.
В документации показана комбинация параметров, которые можно использовать вместе, в некоторых случаях некоторые параметры требуются при использовании с другими, документы должны выделятьсясовпадений, результатом будет что-то вроде этого:
Restart-ServiceFabricDeployedCodePackage -ApplicationName "fabric:/appname" -ServiceName "fabric:/appname/servicename" -PartitionId "b098c9f0-009a-458d-8b2d-8089fedcd014"
или конкретная реплика, подобная этой:
Restart-ServiceFabricDeployedCodePackage -ApplicationName "fabric:/repairs" -ServiceName "fabric:/repairs/web" -PartitionId "b098c9f0-009a-458d-8b2d-8089fedcd014" -ReplicaOrInstanceId 131896982398426643
.
Restart-ServiceFabricPartition
также полезен, имеет те же эффекты:
Restart-ServiceFabricPartition -RestartPartitionMode AllReplicasOrInstances -ServiceName "fabric:/appname/service" -PartitionId "b098c9f0-009a-458d-8b2d-8089fedcd014"
Restart-ServiceFabricPartition
устарел, чтобы заставить людей использоватьStart-ServiceFabricPartitionRestart
, который рекомендуется для служб отключения, когда требуется надежность, например, для служб с отслеживанием состояния, это позволит избежать одновременной установки всех реплик.
Start-ServiceFabricPartitionRestart
Я сам этим не пользовался, но это рекомендация для сервисов с отслеживанием состояния.
Сочетание параметров немного сложное, я рекомендую вампопробуйте с разными комбинациями.В некоторых случаях это удается, но выдает ошибку, не знаю почему!