Назад | Перейти на главную страницу

управление масштабируемыми вручную кластерами

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

Я покопался в Terraform, но похоже, что природа его состояния затрудняет вращение таких ящиков (мне пришлось бы постоянно изменять файл .tf, чтобы добавлять или удалять машины). я прав насчет этого?

в идеале мне нужен вызов ip_address_of_new_box = api.provisionNewBoxInVPCAndRunContainer (). Затем я мог бы поместить этот IP-адрес в свою базу данных, и служба будет опрашивать его, пока не завершит свою задачу, и в это время она вызовет "api.shutDownBox (ip_address_of_new_box)"

я должен отказаться от управления этим вручную с помощью Boto или есть что-то умное, что я могу здесь сделать?

Спасибо!

Ваша проблема здесь определенно не в "стандартном" варианте использования Terraform. Кажется, что это разбивается на три подзадачи:

  1. Создайте экземпляр EC2 с определенной конфигурацией и запустите на нем некоторое программное обеспечение.
  2. Следите за выполнением задачи на этом новом компьютере.
  3. Завершите экземпляр EC2.

Terraform может помочь вам решить подзадачи 1 и 3 с помощью несколько необычного использования:

  • Напишите конфигурацию Terraform, описывающую экземпляр EC2 и любую подготовку, необходимую для запуска на нем вашего программного обеспечения.
  • Бегать terraform apply чтобы создать экземпляр и спрятать файл состояния где-нибудь, чтобы его можно было найти после завершения задания.
  • Подождите, пока работа будет завершена, используя какой-либо механизм за пределами Terraform.
  • Получите состояние, сохраненное ранее, и запустите terraform destroy , чтобы выключить экземпляр.

Предполагается, что этот процесс завершается каким-то сценарием оркестрации, использующим Terraform в качестве реализации шагов 1 и 3.

Terraform вносит в таблицу здесь автоматическое поддержание состояния (в данном случае только идентификатор экземпляра), так что экземпляр может быть полностью отключен, хотя, если вы уверены, что экземпляр EC2 - это все, что вам когда-либо понадобится, Terraform - это скорее всего, здесь будет излишним, по сравнению с простым использованием API EC2 напрямую и сохранением идентификатора экземпляра и IP-адреса самостоятельно в каком-то хранилище для конкретного приложения.


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

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

В принципе, Terraform можно использовать для координации одноразовой настройки конвейера данных и текущих изменений его конфигурации. Однако на момент написания Terraform еще не поддерживает Data Pipeline, поэтому потребуется альтернативный подход.