null

Обновление кластера Service Fabric

Чуть ранее мы рассматривали обновление 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