Как включить/выключить облачные экземпляры в рабочее время

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

Я просмотрел несколько сервисов управления, но они вынесли мне мозги. Есть ли простой способ сделать это?


person David    schedule 25.01.2012    source источник


Ответы (9)


Подход

Вы всегда можете развернуть свое собственное решение, поскольку большинство облачных провайдеров предлагают соответствующий API для запуска/остановки экземпляров по запросу (или даже по расписанию), что, конечно же, на самом деле используют и эти службы управления — AmazonEC2 Интерфейс Java предлагает, например, все соответствующие методы (среди многие другие), в частности:

С помощью сценариев (EC2)

Самый простой подход для этого в отношении Amazon EC2 — создать несколько сценариев Python с помощью отличный boto (интегрированный интерфейс к текущим и будущим инфраструктурным сервисам, предлагаемым Amazon Web Services), который предоставляет все упомянутые выше методы EC2; затем вы можете запускать эти сценарии по запросу или через планировщик операционной системы.

Через непрерывную интеграцию/автоматизацию (EC2)

Другой вариант — сделать сервер непрерывной интеграции механизмом автоматизации (иногда упускаемым из виду аспект этих систем), если вы все равно используете одну из них; это позволит вам запускать / останавливать экземпляры по запросу или по расписанию, подобно cron.

Мы делаем именно это с помощью подключаемого модуля Bamboo AWS (это открытый исходный код и < href="https://bitbucket.org/utoolity/bamboo-aws-plugin" rel="nofollow noreferrer">код доступен на Bitbucket), см. мой ответ на Как программно запускать и останавливать экземпляр Amazon EC2 в java для получения более подробной информации об этом подходе. Хотя Atlassian Bamboo — это коммерческое предложение, должно быть что-то подобное для популярных решений CI с открытым исходным кодом, например, Дженкинс.

person Steffen Opel    schedule 25.01.2012
comment
К вашему сведению, плагин Bamboo AWS устарел: marketplace.atlassian.com/plugins/. - person slm; 07.10.2016

Azure

ОТДЫХ:

Это можно сделать с развертываниями Azure с помощью API REST управления службами Windows Azure< /а>. Поскольку это REST, вы можете использовать большинство языков программирования для доступа к нему.

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

PowerShell:

Или вы можете управлять своими развертываниями таким же образом, но вместо REST вы можете использовать командлеты Azure PowerShell. Я сделал это сам, и это работает хорошо.

Чтобы помочь вам начать работу, есть хорошее руководство по использованию PowerShell для развертывания приложений Azure.

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

person BritishDeveloper    schedule 25.01.2012

ПРИМЕЧАНИЕ. По состоянию на июнь 2013 года экземпляры инфраструктуры как услуги могут быть переведены в состояние "остановлено (освобождено)". В этом состоянии вы платите только за хранение любых дисков, связанных с виртуальной машиной. Исходный ответ ниже описывает экземпляр виртуальной машины, который находится в «остановленном», но не освобожденном состоянии. В настоящее время освобожденное состояние используется по умолчанию для действий по остановке ВМ, выполняемых через портал управления Azure.

Единственный способ сделать это в Widows Azure на сегодняшний день — удалить развертывание.

Если вы остановите службу, вам все равно будет выставлен счет (например, аренда офисного помещения, вы платите за него, даже если вы не находитесь в нем), и вы не можете установить счетчик экземпляров равным нулю. Вариант, который можно использовать, — просто уменьшить количество экземпляров до абсолютного минимума (1), а затем снова увеличить его в течение необходимых часов. Но экономическая выгода от этого будет зависеть от размера ваших инстансов.

person BrentDaCodeMonkey    schedule 25.01.2012
comment
Добавление к этому: если один экземпляр все еще слишком дорог, вы можете изменить размер виртуальной машины на очень малый в нерабочее время, а затем снова изменить его на что-то большее в рабочее время. - person David Makogon; 25.01.2012
comment
Можем ли мы сделать это сегодня? Этот параметр является частью определения службы, а не конфигурации? - person astaykov; 26.01.2012
comment
Вы не сможете сделать это, пока не удалите экземпляр, не измените исходный код и не развернете его снова. В таком случае, зачем вам заморачиваться?! Просто оставьте его удаленным до утра - person BritishDeveloper; 26.01.2012
comment
Я знаю, как ты можешь это сделать. И это не изменение исходного кода, а только файл определения службы (.csdef). Дело в том, что Дэвид упомянул, что вы можете сделать это динамически, но я пока не знаю, доступно ли это. - person astaykov; 26.01.2012
comment
На самом деле вы можете выполнить обновление на месте, чтобы изменить размер виртуальной машины (как указал Дэвид) с новым пакетом, который содержит обновленный файл csdef для нового целевого размера. Это улучшение было представлено прошлой осенью, и, хотя оно и не идеально, оно является ступенькой к, надеюсь, более простому варианту. - person BrentDaCodeMonkey; 26.01.2012

Я знаю старую ветку, но Microsoft представила «Runbooks» для Azure в 2014 году, которые вы можете использовать для автоматизации, включая запланированные запуски и завершения работы. Как упоминалось выше, убедитесь, что вы находитесь в остановленном (освобожденном) состоянии, а не только что остановленном, чтобы предотвратить расходы.

Больше информации:

Скрипт для остановки ваших виртуальных машин

Автоматизация Azure, официальные документы MS.

person sdcharle    schedule 21.12.2014

Да, существует автоматизация Runbook, с помощью которой мы можем запланировать задание. Я создал скрипт для остановки (освобождения) виртуальной машины Azure.

https://gallery.technet.microsoft.com/Deallocate-all-VM-under-79049c69

Прочтите, как использовать модуль Runbook http://azure.microsoft.com/blog/2014/06/19/azure-automation-runbook-management/

Делокация и остановка отличаются, так как остановка vm также потребует затрат.

person Mahesh Malpani    schedule 21.12.2014

Лучшая статья об автоматизации + включении/выключении виртуальных машин, которую я нашел. [05 февраля 2015]. http://clemmblog.azurewebsites.net/using-azure-automation-start-und-stop-virtual-machines-schedule/

person Oxon    schedule 05.02.2015

Рекомендуемое решение для AWS:

Конвейер данных AWS идеально подходит для этой задачи. Data Pipeline использует технологии AWS и может быть настроен для выполнения команд AWS CLI по заданному расписанию без каких-либо внешних зависимостей. Конвейер данных может записывать журналы в S3 и работает в контексте роли IAM, что устраняет требования к управлению ключами. Конвейер данных также экономически эффективен; например, уровень бесплатного пользования Data Pipeline можно использовать для остановки и запуска экземпляров один раз в день.

https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/

person Hüseyin Yağlı    schedule 04.06.2016

См. эту статью есть несколько вариантов включения/выключения экземпляров внутри AWS.

  • Конвейер данных AWS
  • Запланированные мероприятия AWS Lambda
  • Запланированный Cron на экземпляре EC2
  • Запланированное масштабирование группы автоматического масштабирования

Итак, в вашем случае я бы рекомендовал следующее:

Для AWS:

Через команду оболочки, например команды командной строки AWS: см. раздел включение/выключение. Облачные экземпляры с использованием AWS Pipeline. этот метод инициирует запуск и завершение отдельного экземпляра EC2 для каждого вызова API AWS, время выполнения которого влияет на ваш счет.

Через языки программирования, такие как Node.js / Python: см. Включение/выключение облачных экземпляров с помощью AWS Lambda. Задача, выполняемая два раза в день, обычно менее 3 секунд с потреблением памяти до 128 МБ, обычно стоит менее 0,0004 доллара США в месяц.

Для Azure и Rackspace (или других платформ, которые могут у вас быть):
Используйте приведенные выше инструменты, чтобы предоставить Соответствующий API для запуска/остановки экземпляров по запросу.

Вы также можете установить scripts-per-boot, которые запускаются при каждом запуске вашего экземпляра. .

person Chetabahana    schedule 16.07.2016

АМС

AWS SDK — ваш лучший выбор, но я использую TotalCloud.io для start и stop на уровне бесплатного пользования. Очень настраиваемый.

Легко настроить.

person Veer Abheek Singh Manhas    schedule 20.06.2019