Исключить экземпляр Azure AppService из распределения нагрузки - PullRequest
0 голосов
/ 06 марта 2020

Есть ли способ исключить экземпляр AppService из балансировщика нагрузки:

  1. Через портал?
  2. Через SDK?

Через SDK был бы идеальным, тогда мы могли бы установить флаг MakeVisibleToLoadBalance (если такая вещь существовала), как только вся инициализация завершена.

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

Причина: Когда мы перезапускаем экземпляр (например, с помощью расширенного перезапуска), метрики показывают значительное увеличение времени отклика каждый раз. Я полагаю, что причина в том, что балансировщик нагрузки считает, что машина доступна, но на самом деле она еще не завершила инициализацию, поэтому запросы, которые балансировщик нагрузки отправляет этому экземпляру, значительно задерживаются.

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

Ответы [ 2 ]

1 голос
/ 12 марта 2020

// Согласно обсуждению с wallismark в «комментариях». Скопировал полезные комментарии, чтобы ответить.

Чтобы исправить «причину» / сценарий ios, которую вы упомянули выше, вы можете использовать метод ApplicationInitialization. Каждый раз, когда ваше приложение запускается, это может происходить из-за того, что новый рабочий подключается к сети (горизонтальное масштабирование) или даже из-за холодного запуска, вызванного новым развертыванием, изменением конфигурации и т. Д. c. ApplicationInitialization будет выполняться для прогрева сайта перед принятием запросов на этого работника.

Таким образом, модуль инициализации приложения - удобная функция, которая позволяет согревать ваше приложение до того, как приложение получит запросы, чтобы помочь избежать холодного запуска или медленной начальной загрузки при перезапуске приложения. Оформить заказ - https://ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/ - Он также был реализован для всех других операций, в которых предоставляется новый работник (таких как автоматическое масштабирование, ручное масштабирование или Azure fabri c обслуживание). Но вы не можете исключить экземпляр из балансировщика нагрузки.

0 голосов
/ 06 марта 2020

Если ваше требование соответствует, вы можете использовать ARR affinit y; в развертывании с несколькими экземплярами гарантирует, что клиент будет перенаправлен на один и тот же экземпляр в течение всего срока сеанса. Вы можете установить для этого параметра значение Выкл. Для приложений без сохранения состояния.

Как правило, масштабирующие (триггерные) несколько запущенных копий ваших веб-приложений и обрабатывают конфигурации балансировки нагрузки, необходимые для распределения входящих запросов по всем экземплярам. Если у вас есть более одного экземпляра, запрос, направленный в ваше WebApp, может go для любого из них с помощью балансировщика нагрузки, который решит, какой экземпляр направить запрос, в зависимости от того, насколько занят каждый экземпляр в данный момент.

Чтобы поделиться дополнительной информацией об этой функции - на балансировщике нагрузки есть то, что, как только запрос от вашего браузера сделан на сайт, он добавит к нему ARRAffinity cook ie (с ответом), содержащим спецификацию c идентификатор экземпляра, который сделает следующий запрос от этого браузера go к тому же экземпляру. Вы можете использовать эту функцию для отправки запроса на указанный c экземпляр нашего сайта. Вы можете найти этот параметр в настройках приложения службы приложений: при запуске нескольких приложений в одном и том же плане службы приложений каждый уменьшенный экземпляр запускает все приложения в плане.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...