2016-04-01 7 views
1

Мы написали высоко масштабируемый Cloudservice для MS Azure с двумя ролями: «WebsiteRole» и «WebsiteWorkerRole». Для повышения производительности мы используем Cloudservice в нескольких регионах (2x US, 2x EU, 1x JP). У нас есть разные файлы конфигурации для каждого региона (EuWestProductive.azurePubxml, ServiceConfiguration.CloudEuWest.cscfg, Web.ReleaseEuWest.config).Azure: не развертывать роль по конфигурации

Теперь проблема: в каждом регионе у нас есть «WebsiteRole» и «WebsiteWorkerRole». Но у «WebsiteWorkerRole» есть только очень маленькие задачи, поэтому одного лишнего экземпляра в одном регионе более чем достаточно.

Мы попытались установить значение экземпляра роли равным нулю (ServiceConfiguration.CloudEuWest.cscfg). Но это недопустимо: Azure Feedback: Allow a Role instance count of 0

Есть ли другой способ удалить роль при развертывании Cloudservice?

ответ

2

Нет, как вы обнаружили, облачная служба не позволяет масштабировать до нуля. Вы должны эффективно удалить развертывание. Чтобы иметь минимальное изменение того, что у вас уже есть, вы можете разделить две роли на два разных развертывания. Затем создайте сценарий автоматизации Azure или набор сценариев, запускаемых в другом месте, который обрабатывает развертывание рабочей роли при необходимости и вывод из эксплуатации, когда это не требуется.

В зависимости от типа рабочей нагрузки, выполняемой работником, вы также можете взглянуть на другой путь использования чего-то вроде Azure Automation для выполнения работы. Это особенно актуально, если это небольшая обработка, которая происходит только несколько раз в день. С момента написания сценария автоматизации вы платите за минуту, поэтому просто убедитесь, что он будет работать меньше, чем фактический текущий экземпляр.

Это действительно сводится к тому, что делает этот работник, сколько обработки ему действительно нужно, сколько ресурсов ему нужно и как часто он должен работать. Существует множество опций, таких как Azure Automation, другой поток роли в сети, отдельное развертывание облачных сервисов и т. Д. Каждый из них имеет свои плюсы и минусы. Один из вариантов может даже взглянуть на новые функции Azure, которые они только что анонсировали (в предварительном просмотре и заряженные исполнением).

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

0

Спасибо @MikeWo, ваша идея отделить развертывание была отличной! Я проверил это с небольшим примером проекта, и он работает отлично. Теперь также возможно изменить размер виртуальной машины и другие конфигурации для региона.

Example project

(Комментарии не позволяют изображения)

+0

Технически да, но для некоторых параметров, которые находятся в файле ServiceDefinition, например, VM Size, что вам нужно сделать какую-то работу, чтобы получить, что прежде чем выполнять сборку и развертывание, так как этот файл упакован вместе с кодом. Существует множество способов сделать это, например, пользовательские шаги сборки, отдельные проекты Cloud Project в VS, как то, что вы сделали выше, и т. Д. Любая конфигурация конфигурации службы легко обрабатывается во время развертывания. – MikeWo

 Смежные вопросы

  • Нет связанных вопросов^_^