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

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

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

8 ответов


подход

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

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

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

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

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

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


Azure

остальное:

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

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

PowerShell:

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

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

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


примечание: с июня 2013 года экземпляры IaaS могут быть помещены в состояние" остановлено (освобождено)". В этом состоянии выставляется счет только за хранение любых дисков, связанных с виртуальной машиной. Исходный ответ ниже описывает экземпляр VM, который находится в" остановленном", но не освобожденном состоянии. Освобожденное состояние в настоящее время является значением по умолчанию для действий остановки виртуальной машины, выполняемых через портал управления Azure.

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

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


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

Подробнее:

скрипт для остановки VMs

службы автоматизации Azure, официальные документы МС.


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

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

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

Dellocation и stop отличаются, так как stop vm также будет нести расходы.


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


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

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

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


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

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

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

для AWS:

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

через языки программирования как узел.js / Python: см.включить включение / выключение облачных экземпляров с помощью AWS Lambda. Задача выполняется дважды a день для типично меньш чем 3 секунды с потреблением памяти до 128 МБ обычно стоит менее $ 0.0004 USD / месяц

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

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