Чуть ранее мы рассматривали обновление Service Fabric в конфигурации DevCluster, представлявшую из себя задачу весьма нетривиальную. Сегодня же мы посмотрим, как обновляется кластер Service Fabric в многонодовой конфигурации так, как это задумывалось изначально.
Команды выполняются локально на машине с развёрнутым SF в PowerShell с правами Администратора:
Подключаемся к кластеру (-ConnectionEndpoint можно не указывать, так как кластер локальный)
Connect-ServiceFabricCluster
Проверяем текущую версию SF
Get-ServiceFabricNode
Проверяем наличие зарегистрированных пакетов обновлений в кластере
В нашем случае их нет (кроме текущего)
Get-ServiceFabricRegisteredClusterCodeVersion
CodeVersion
-----------
6.1.456.9494
6.1.467.9494
6.1.472.9494
6.2.262.9494
Получаем доступные к обновлению версии SF и ссылки на скачивание пакета обновления
Внимание, так как включено автоматическое скачивание новых пакетов, в команде выше могут присутствовать уже отозванные пакеты
Поэтому проверяем доступные опубликованные версии для обновления с текущей (здесь - 6.1.456.9494)
Get-ServiceFabricRuntimeUpgradeVersion -BaseVersion 6.1.456.9494
Version SupportExpiryDate TargetPackageLocation
------- ----------------- ---------------------
6.1.456.9494 30.05.2018 0:00:00 https://download.microsoft.com/download/B/0/B/B0BCCAC5-65AA-4BE3-AB13-D5FF5890F4B5/6.1.456.9494/MicrosoftAzureServiceFabric.6.1.456.9494.cab
6.1.467.9494 30.05.2018 0:00:00 https://download.microsoft.com/download/B/0/B/B0BCCAC5-65AA-4BE3-AB13-D5FF5890F4B5/6.1.467.9494/MicrosoftAzureServiceFabric.6.1.467.9494.cab
6.1.472.9494 https://download.microsoft.com/download/B/0/B/B0BCCAC5-65AA-4BE3-AB13-D5FF5890F4B5/6.1.472.9494/MicrosoftAzureServiceFabric.6.1.472.9494.cab
Выбираем послежднюю доступную версию, убеждаемся, что она зарегистрирована на кластере (одной командой выше)
Если не зарегистрирована, скачиваем по указанной ссылке и далее:
Копируем скачанный пакет в хранилище образов
Copy-ServiceFabricClusterPackage -Code -CodePackagePath .\MicrosoftAzureServiceFabric.6.1.472.9494.cab -ImageStoreConnectionString "fabric:ImageStore"
Регистрируем пакет обновления в SF
Register-ServiceFabricClusterPackage -Code -CodePackagePath MicrosoftAzureServiceFabric.6.1.472.9494.cab
Запускаем обновление кластера до требуемой версии на каждой ноде по очереди.
Отслеживается работоспособность и доступность сервисов: таким образом, обновление происходит без downtime.
При возникновении ошибки, будет произведён откат обновления.
Start-ServiceFabricClusterUpgrade -Code -CodePackageVersion 6.1.472.9494 -Monitored -FailureAction Rollback
Следить за прогрессом обновления можно с помощью команды
Get-ServiceFabricClusterUpgrade
TargetCodeVersion : 6.1.472.9494
TargetConfigVersion : 1
StartTimestampUtc : 21.03.2018 14:43:33
UpgradeState : RollingForwardPending
UpgradeDuration : 00:10:04
CurrentUpgradeDomainDuration : 00:00:00
CurrentUpgradeDomainProgress : UD2
NodeName : Node3
UpgradePhase : Upgrading
NextUpgradeDomain : UD2
UpgradeDomainsStatus : { "UD0" = "Completed";
"UD1" = "Completed";
"UD2" = "Pending" }
UpgradeKind : Rolling
RollingUpgradeMode : MonitoredAuto
ForceRestart : False
UpgradeReplicaSetCheckTimeout : 49710.06:28:15
Проверяем обновлённую версию SF
Get-ServiceFabricNode