Как включить / выключить облачные экземпляры в рабочее время - PullRequest
21 голосов
/ 25 января 2012

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

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

Ответы [ 9 ]

12 голосов
/ 25 января 2012

Azure

ОСТАЛЬНЫЕ:

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

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

PowerShell:

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

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

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

11 голосов
/ 25 января 2012

подход

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

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

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

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

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

Мы делаем именно это с помощью Bamboo AWS Plugin (это с открытым исходным кодом и код доступен в Bitbucket ), см. Мой ответ на Как начать и остановите экземпляр Amazon EC2 программно в java для получения более подробной информации об этом подходе. В то время как Atlassian Bamboo является коммерческим предложением, должно быть что-то подобное для популярных решений с открытым исходным кодом CI, например, например. Дженкинс , а также.

6 голосов
/ 25 января 2012

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

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

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

2 голосов
/ 21 декабря 2014

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

Дополнительная информация:

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

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

1 голос
/ 05 февраля 2015

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

1 голос
/ 21 декабря 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 также будет нести расходы.

0 голосов
/ 20 июня 2019

AWS

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

Прост в настройке.

0 голосов
/ 16 июля 2016

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

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

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

Для AWS :

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

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

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

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

0 голосов
/ 04 июня 2016

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

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

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

...