Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается метод прерывания операции развертывания сетевой службы сайта (SNS) в нетерминальном состоянии. Эта возможность поддерживает только сетевые функции контейнеров (CNFS). Вы активируете его, применив тег к управляемой группе ресурсов (MRG) для сетевой функции (NF). Позже необходимо удалить этот тег для восстановления будущих операций SNS.
Почему прерывать операцию развертывания службы
Диспетчер служб Azure развертывает сложные рабочие нагрузки CNF, состоящие из множества отдельных компонентов (диаграмм Helm). При запуске развертывания SNS каждый компонент обрабатывается последовательно, в порядке определения сетевой функции (NFD). В зависимости от того, сколько компонентов затрагивается при развертывании, эта операция SNS может занять длительное время.
В качестве примера рассмотрим сценарий, в котором CNF имеет 30 компонентов. Для развертывания каждого компонента требуется 5 минут. Общее время выполнения этой операции превысит 2 часа. Теперь рассмотрим операционные проблемы с длительными операциями развертывания:
- Пользователи могут захотеть протестировать операцию развертывания только до определенного компонента.
- Пользователи могут понять, что после запуска операции ошибка существует в конфигурации компонента.
- Операция может создать неожиданное негативное влияние на клиентскую службу.
В таких случаях желательно прервать операцию. До внедрения этой возможности прерывания единственным вариантом было ожидание сбоя дефектного компонента. С помощью этой возможности прерывания можно заранее прервать длительные развертывания, прежде чем они достигают дефектного компонента. Это прерывание сводит к минимуму задержки и повышает гибкость работы.
Обзор операций развертывания службы
Во время первого развертывания системы SNS операция установки создает управляемую группу ресурсов (MRG), которая включает ресурс NF. Для последующих развертываний SNS операции обновления используют эту управляемую зависимость для изменения NF в MRG. Для использования функции прерывания необходимо иметь доступ к NF MRG.
Замечание
NF MRG имеет другие разрешения по умолчанию по сравнению с группой ресурсов SNS (RG), которая часто ограничивает прямой доступ для пользователей.
Прерывание операции развертывания службы
Следуйте этому процессу, чтобы сделать прерывание. Помните, что поведение прерывания отличается при выполнении операции установки и операции обновления:
- При прерывании установки рабочий процесс поддерживает только метод восстановления при приостановке при сбое.
- При прерывании обновления рабочий процесс учитывает настроенный метод восстановления сбоя. Этот метод может быть либо откатом при сбое, либо приостановкой при ошибке.
Запросить прерывание с тегом
Чтобы прервать запущенное развертывание, добавьте тег cancel:1 в NF MRG. Вы можете идентифицировать MRG, ссылаясь на значение properties.managedResourceGroupConfiguration.name в ресурсе SNS.
Тег представляет собой статическую пару "ключ-значение" и должен быть точным совпадением. Его можно добавить с помощью любого поддерживаемого метода, например портала Azure, Azure CLI или ПАКЕТА SDK REST.
В следующем примере показано, как добавить тег с помощью Azure CLI:
az tag update --resource-id {resourceGroup} --operation Merge --tags cancel=1
Дождитесь активации прерывания
После того как вы примените тег к NF MRG, прерывание начинает происходить между операциями компонентов. Текущая операция компонента не прерывается и должна продолжаться до завершения.
Перед тем как рабочий процесс начнет следующую операцию компонента, он проверяет наличие тега в NF MRG. Если тег присутствует, все остальные компоненты не выполняются и устанавливаются в failed состояние.
Если прерывание применяется к операции обновления, рабочий процесс учитывает настроенный метод восстановления сбоя. После завершения восстановления после сбоя устанавливается конечное состояние операции развертывания в failed.
Мониторинг состояния компонентов сетевой функции
Используйте представление компонента NF для определения состояния выполняемого прерывания.
DeploymentStatusProperties Найдите состояние свойства последнего завершенного компонента, которое должно находиться в состоянии, отличном от состояния installing.
Вы также можете использовать представление компонента для определения состояний компонентов на основе настроенного метода восстановления сбоя.
Подтверждение действия прерывания с помощью журналов
После того как развертывание SNS достигает состояния failedтерминала, уведомление об прерывании добавляется в выходной журнал операции.
Ошибка, возникаемая во время прерывания установки
В следующем коде показан пример журнала, генерируемого во время первой операции установки. Ссылка на testapp идентифицирует компонент, который не был запущен вследствие запроса прерывания. Строка deployment cancelled указывает, что прерывание было применено к начальной операции установки.
{
"code": "DeploymentFailed",
"message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
"details": [
{
"code": "NetworkFunctionApplicationDeploymentFailed",
"message": "[Application(testapp): Deployment cancelled for application: testapp due to User cancellation request]"
}
]
}
Ошибка, возникаемая во время прерывания обновления
В следующем коде показан пример журнала, генерируемого во время операции обновления. Ссылка на testapp указывает на следующий компонент, который не был запущен из-за запроса прерывания. Строка NF update указывает, что прерывание было применено к операции обновления.
{
"code": "DeploymentFailed",
"message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
"details": [
{
"code": "NetworkFunctionApplicationDeploymentFailed",
"message": "[Application(testapp) failed to be processed in NF update. Error: Deployment cancelled for application: testapp due to User cancellation request]"
}
]
}
Удалить тег после завершения прерывания
Чтобы избежать непреднамеренных прерываний любых будущих операций развертывания SNS, следует удалить тег из NF MRG. Например, чтобы удалить тег с помощью Azure CLI, выполните следующую команду:
az tag update --resource-id {resourceGroup} --operation Delete --tags cancel=1
Другие вопросы
Если вы хотите прервать операцию развертывания SNS, обратите внимание на следующие аспекты:
- Прерывание развертываний поддерживается только для CNF.
- При добавлении тега в MRG SNS продолжающееся действие компонента не прерывается и должно завершиться до начала прерывания.