Как программно перезапустить экземпляр Azure Web App? - PullRequest
1 голос
/ 11 мая 2019

У меня есть набор веб-приложений Azure, в которых отдельные экземпляры иногда становятся нездоровыми.Мы определили, что перезапуск этого конкретного экземпляра с помощью Advanced Diagnostics приводит к его резервному копированию.

Мы хотели бы создать некоторую автоматизацию, чтобы после обнаружения этого нездорового экземпляра мы автоматически перешли и перезапустили этот экземпляр (обратите внимание, мы хотим перезапустить только экземпляр, а не все веб-приложение).

Мы нашли public static Task RestartAsync(this IWebAppsOperations operations, string resourceGroupName, string name, bool? softRestart = null, bool? synchronous = null, CancellationToken cancellationToken = default); в Microsoft.Azure.Management.AppService.Fluent -> WebAppsOperationsExtensions и аналогичные в библиотеке Non-Fluent ARM.Однако это только позволяет нам перезапустить весь веб-приложение.Мы хотим минимизировать сбои и нацеливаться только на конкретный экземпляр при перезапуске.

Существует ли механизм через библиотеку .NET или REST API (где мы сами собираем запрос) для перезапуска одного экземпляра веб-приложения

1 Ответ

1 голос
/ 11 мая 2019

В этом сообщении блога MSDN говорится: «Командлеты Azure PowerShell для WebApp позволяют перезапустить WebApp или слот WebApp. Однако они не позволяют перезапустить экземпляр в WebApp», но в нем есть сценарий PowerShell.который перезапускает все экземпляры с некоторой задержкой: https://blogs.msdn.microsoft.com/david_burgs_blog/2018/07/11/powershell-script-to-restart-role-instances-for-webapp/

А также, если вы проверяете API-интерфейс REST Azure, есть 2 метода для уничтожения процесса в экземпляре, я думаю, что это будет достаточно для вас, есливы просто убиваете процесс w3wp.exe в этом конкретном случае: https://docs.microsoft.com/en-us/rest/api/appservice/webapps/deleteinstanceprocess https://docs.microsoft.com/en-us/rest/api/appservice/webapps/deleteinstanceprocessslot

Примерно так:

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}?api-version=2016-08-01
...