Как включить/выключить облачные объекты в рабочие часы

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

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

Ответ 1

Подход

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

Через сценарий (EC2)

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

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

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

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

Ответ 2

Azure

REST

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

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

PowerShell:

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Script, чтобы остановить ваши виртуальные машины

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

Ответ 5

Есть автоматическая Runbook, где мы можем запланировать работу. Я создал script для остановки (De-выделенного) 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 также будет нести расходы.

Ответ 7

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

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

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

Ответ 8

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

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

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

Для AWS:

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

Через языки программирования, такие как Node.js/ Python: см. Turn on/off Облачные экземпляры с использованием AWS Lambda. Задача, выполняемая дважды день обычно менее 3 секунд с потреблением памяти до 128MB обычно стоит менее $0,0004 USD/month

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

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

Ответ 9

AWS

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

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