Windows Azure и динамическая эластичность
Есть ли способ сделать динамическую эластичность в Windows Azure? Если мои работники начинают перегружаться, или очереди начинают переполняться, или слишком многим работникам нечем заняться, есть ли способ динамически добавлять или удалять работников с помощью кода или это просто делается вручную (требует вмешательства человека)? сейчас? Кто-нибудь знает о каких-либо планах добавить это, если его в настоящее время нет в наличии?
5 ответов
Существует API управления службами, и вы можете использовать его для масштабирования своего приложения (из кода, работающего в Windows Azure, или из кода, работающего вне Windows Azure).
http://msdn.microsoft.com/en-us/library/ee460799.aspx и http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=windowsazuresamples&ReleaseId=3233.
Microsoft поставила Autoscaling Application Block (Wasabi) для обеспечения динамического масштабирования. Некоторые из поддерживаемых сценариев:
- Автоматическое масштабирование веб-ролей и рабочих ролей в Windows Azure путем динамического изменения количества экземпляров или выполнения регулирования приложений.
- Автоматическое масштабирование ролей Windows Azure по расписанию.
- Автоматическое масштабирование ролей Windows Azure на основе показателей, собранных из приложения и / или Windows Azure, но ограниченных верхними и нижними границами количества экземпляров для каждой роли.
- Предотвращение быстрых колебаний в количестве ролевых экземпляров со стабилизатором. Стабилизатор также может помочь оптимизировать затраты, ограничивая операции масштабирования до начала часа и операции масштабирования до конца часа.
- Мониторинг и регистрация активности автомасштабирования.
- Отправка уведомлений для предварительного просмотра любых операций масштабирования перед их выполнением.
- Шифрование правил и других настроек в хранилище BLOB-объектов Windows Azure или в локальном хранилище файлов.
- Управление конфигурацией автоматического масштабирования с помощью Windows PowerShell.
Предоставляется пример приложения ( обзоры Tailspin), демонстрирующий все эти функции (инструкции по установке доступны здесь). Кроме того, ознакомьтесь с Руководством для разработчиков и пошаговым руководством по использованию Channel9.
Блок доступен в виде автономной загрузки двоичных файлов, исходного кода или через NuGet.
Вот пара выступлений / демонстраций, демонстрирующих Васаби в действии:
Windows Azure только что добавила функцию автоматического масштабирования, встроенную в платформу. Теперь легко настроить свои правила автомасштабирования прямо на портале управления:
Смотрите объявление и демо. Я также написал пост, сравнивающий Windows Azure Autoscale с Wasabi и описывающий путь вперед.
- Создать очередь с именем
autoscale.[your_role_name].instance_count
- На портале управления установите для автомасштабирования значение
Queue
, - Установите в поле Target Count значение
1
,
Теперь вы можете использовать стандартные операции постановки и снятия с очереди в этой очереди, чтобы контролировать количество экземпляров рабочих ролей. У вас есть 7 дней, чтобы обработать сообщение до истечения срока его действия, поэтому вы можете создать рабочую роль, которая может гарантировать, что количество сообщений в очереди отслеживает количество целевых экземпляров.
Если вам нужна динамическая эластичность, вы, вероятно, уже имеете в виду контроллер на основе рабочих ролей, так что, вероятно, это не проблема.
Проект с открытым исходным кодом Lokad.Cloud для Windows Azure содержит платформу распределенного исполнителя. Помимо прочего, он обеспечивает автоматическое масштабирование с функцией подготовки виртуальных машин.