Может ли Windows Azure динамически масштабировать приложение при изменении нагрузки?

#windows #azure #load-balancing

#Windows #azure #балансировка нагрузки

Вопрос:

Из того, что я вижу в материалах Windows Azure о том, как развертывать приложения (например, this lab), нужно выбрать «размер роли» и количество экземпляров роли при развертывании своего приложения.

Это выглядит не круто — что произойдет, если произойдет внезапное увеличение числа запросов к приложению?

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

Комментарии:

1. Я думаю о чем-то подобном, и мне было бы неудобно оставлять эту опцию кому-то другому, например стороннему инструменту, как было предложено. Это все равно, что позволить кому-то другому включать свет в вашей квартире. У меня это не сработало бы, потому что я думаю, что одним из основных успехов при работе в облаке является прогнозирование выставления счетов.

Ответ №1:

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

  • Понимание того, как работает выставление счетов в Windows Azure и при переключении часового счетчика
  • Понимание времени нарастания и того, когда следует рассмотреть возможность уменьшения масштаба, не вызывая скачков сервера вверх / вниз

Кроме того, чтобы выполнить собственное масштабирование, вам нужно будет разместить этот код либо локально, либо в одной из ваших ролей (предпочтительно в своей собственной роли «менеджера»). Если вы находитесь в роли, вы должны убедиться, что код управления выполняется только в одном экземпляре (с использованием некоторого типа семафора блокировки больших двоичных объектов или чего-то подобного) — в противном случае у вас будет риск двойного масштабирования.

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

Ответ №2:

Эта функциональность не встроена в Azure, но Microsoft может что-то добавить в будущем.

Существует довольно много примеров, которые показывают, как это реализовать самостоятельно — например, смотрите http://blogs.msdn.com/b/publicsector/archive/2011/02/18/dynamically-scale-your-windows-azure-service-instances.aspx


В качестве дополнения к этому — Скотт Гу выступал с докладом в Лондоне на этой неделе (июнь 2011) и предположил, что автоматическое масштабирование — это то, над чем Microsoft активно работает и что в ближайшем будущем оно будет представлено. Очевидно, что в настоящее время нет даты — и никаких гарантий!

Ответ №3:

С ноября 2011 года Microsoft поставила блок приложений с автоматическим масштабированием (Wasabi). Проверьте это. http://aka.ms/autoscaling

Это не встроено в Windows Azure, как другие службы (ACL, кэширование, служебная шина и т.д.), Но является компонентом, который вы должны разместить. Это довольно легко сделать, и вместе с этим обеспечивается гибкость предоставления собственных сборщиков данных, показателей и пользовательских действий.

Несколько полезных презентаций и демонстрационных версий можно найти здесь: