Поделиться через


Обновление приложения Service Fabric

Приложение Azure Service Fabric — это коллекция служб. Во время обновления Service Fabric сравнивает новый манифест приложения с предыдущей версией и определяет, какие службы в приложении требуют обновления. Service Fabric сравнивает версию манифестов службы с версией в предыдущей версии. Если версия службы не изменилась, эта служба не будет обновлена.

Примечание.

ApplicationParameterы не сохраняются при обновлении приложения. Чтобы сохранить текущие параметры приложения, пользователь должен сначала получить параметры и передать их в вызов API обновления, как показано ниже:

$myApplication = Get-ServiceFabricApplication -ApplicationName fabric:/myApplication
$appParamCollection = $myApplication.ApplicationParameters

$applicationParameterMap = @{}
foreach ($pair in $appParamCollection)
{
    $applicationParameterMap.Add($pair.Name, $pair.Value);
}

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/myApplication -ApplicationTypeVersion 2.0.0 -ApplicationParameter $applicationParameterMap -Monitored -FailureAction Rollback

Обзор поэтапного обновления

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

Версии должны быть совместимыми вперед и назад по этой причине. Если они несовместимы, администратор приложения отвечает за промежуточное обновление с несколькими этапами для поддержания доступности. При многоэтапном обновлении первым шагом является обновление до промежуточной версии приложения, совместимого с предыдущей версией. Второй шаг — обновить окончательную версию, которая нарушает совместимость с предварительной версией обновления, но совместима с промежуточной версией.

Домены обновления указываются в манифесте кластера при настройке кластера. Домены обновлений не получают обновления в определённом порядке. Домен обновления — это логическая единица развертывания для приложения. Домены обновления позволяют службам оставаться в состоянии высокой доступности во время обновления.

Обновления без перезагрузки возможны, если обновление применяется ко всем узлам в кластере, когда у приложения только один домен обновления. Этот подход не рекомендуется, так как служба выходит из строя и недоступна во время обновления. Кроме того, Azure не предоставляет никаких гарантий при настройке кластера только с одним доменом обновления.

После завершения обновления все службы и реплики (экземпляры) останутся в той же версии, т. е. если обновление успешно, они будут обновлены до новой версии; если обновление завершится ошибкой и будет откатено, они будут возвращены к старой версии.

Проверки здоровья во время обновлений

Для обновления необходимо задать политики работоспособности (или использовать значения по умолчанию). Обновление называется успешным, если все домены обновления обновляются в течение указанного времени ожидания, и когда все домены обновления считаются работоспособными. Домен здорового обновления означает, что домен обновления прошел все проверки здоровья, указанные в политике здоровья. Например, политика работоспособности может потребовать, чтобы все службы в экземпляре приложения были работоспособными, так как работоспособность определяется Service Fabric.

Политики работоспособности и проверки во время обновления Service Fabric не зависят от конкретных служб и приложений. То есть специфические для услуги тесты не проводятся. Например, служба может иметь требование к пропускной способности, но Service Fabric не имеет сведений для проверки пропускной способности. Ознакомьтесь со статьями о работоспособности выполняемых проверок. Проверки, которые происходят во время обновления, включают тесты на то, был ли скопирован пакет приложения правильно, был ли запущен экземпляр и т. д.

Работоспособность приложения — это агрегирование дочерних сущностей приложения. Короче говоря, Service Fabric оценивает работоспособность приложения с помощью работоспособности, сообщаемой в приложении. Он также оценивает работоспособность всех служб для приложения таким образом. Service Fabric также оценивает работоспособность служб приложений, агрегируя работоспособность своих дочерних объектов, таких как реплика службы. После удовлетворения политики работоспособности приложения обновление может продолжиться. Если политика безопасности нарушена, обновление приложения завершается ошибкой.

Режимы обновления

Рекомендуемый режим для обновления приложения — это отслеживаемый режим, который часто используется. Отслеживаемый режим выполняет обновление в одном домене обновления, и, если все проверки работоспособности проходят (в соответствии с указанной политикой), автоматически переходит к следующему домену обновления. Если проверка работоспособности завершается сбоем и (или) истекает время ожидания, обновление либо откатывается для домена обновления, либо режим изменяется вручную на неуправляемый. Вы можете настроить обновление, чтобы выбрать один из этих двух режимов для неудачных обновлений.

Немониторизованный режим вручную требует вмешательства вручную после каждого обновления домена обновления, чтобы начать обновление в следующем домене обновления. Проверки работоспособности Service Fabric не выполняются. Администратор выполняет проверку работоспособности и состояния перед началом обновления в следующем домене обновления.

Обновление служб по умолчанию

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

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

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

Подсказка

Параметр конфигурации кластера EnableDefaultServicesUpgrade должен иметь значение true , чтобы включить правила 2) и 3) выше (обновление и удаление службы по умолчанию). Эта функция поддерживается начиная с Service Fabric версии 5.5.

Обновление нескольких приложений с помощью конечных точек HTTPS

При использовании HTTPS необходимо не использовать один и тот же порт для разных экземпляров одного приложения. Причина заключается в том, что Service Fabric не сможет обновить сертификат для одного из экземпляров приложения. Например, если приложение 1 или приложение 2 хотите обновить сертификат 1 до 2. Когда происходит обновление, Service Fabric, может быть, удалил регистрацию сертификата 1 с http.sys, хотя другое приложение по-прежнему использует его. Чтобы предотвратить это, Service Fabric обнаруживает, что на порту уже зарегистрирован другой экземпляр приложения (из-за http.sys) и завершает операцию с ошибкой.

Поэтому Service Fabric не поддерживает обновление двух разных служб с использованием одного порта в разных экземплярах приложений. Другими словами, вы не можете использовать один и тот же сертификат в разных службах на одном порту. Если требуется наличие общего сертификата на одном порту, необходимо убедиться, что службы размещены на разных компьютерах с учетом ограничений на размещение. Или при возможности использовать динамические порты Service Fabric для каждой службы в каждом экземпляре приложения.

Если вы видите сбой обновления с https, предупреждение об ошибке с сообщением "API Windows HTTP Server не поддерживает несколько сертификатов для приложений, использующих порт".

Блок-схема обновления приложения

Блок-схема после этого абзаца поможет понять процесс обновления приложения Service Fabric. В частности, поток описывает, как настройки времени ожидания, такие как HealthCheckStableDuration, HealthCheckRetryTimeout и UpgradeHealthCheckInterval, помогают определить, когда обновление в одном домене обновления считается успешным или неудачным.

Процесс обновления для приложения Service Fabric

Дальнейшие действия

Обновление приложения с помощью Visual Studio описывает обновление приложения с помощью Visual Studio.

Обновление приложения с помощью PowerShell позволяет выполнить обновление приложения с помощью PowerShell .

Управление обновлением приложения с помощью параметров обновления.

Сделайте приложение совместимым, научившись использовать сериализацию данных.

Узнайте, как использовать расширенные функциональные возможности при обновлении приложения, ссылаясь на дополнительные разделы.

Устранение распространенных проблем при обновлении приложений путем ссылки на действия, описанные в разделе "Устранение неполадок с обновлениями приложений".