Статьи

Самый простой способ использовать точечные экземпляры EC2 с помощью Docker и Nirmata

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

В то же время провайдеры общедоступных облаков, такие как AWS, создали несколько моделей потребления облачных ресурсов, чтобы уменьшить барьер для принятия их услуг. Пользователи AWS могут использовать вычислительные ресурсы в EC2 несколькими различными способами — экземплярами по требованию, зарезервированными экземплярами и выборочными экземплярами. Для среднего клиента стоимость EC2 составляет примерно 70-80% от общего ежемесячного счета AWS. Таким образом, расходы EC2 — это, конечно, первое место, где нужно искать сбережения.

Давайте посмотрим, как можно использовать экземпляры AWS EC2:

По запросу и зарезервированные экземпляры

Наиболее распространенный способ потребления EC2 — запуск экземпляров по требованию. Экземпляры по требованию обеспечивают наибольшую гибкость и предсказуемость, но являются самыми дорогими. С другой стороны, для предприятий, которые имеют предсказуемые, долгосрочные вычислительные потребности, использование зарезервированных экземпляров может обеспечить до 70% экономии, но гибкость в возможности изменения семейства экземпляров и регионов, а также долгосрочной приверженности ограничена участвует.

Точечные экземпляры

С экземплярами Spot AWS позволяет клиентам делать ставки на любые неиспользуемые емкости EC2 в зоне доступности. Эта модель позволяет клиентам использовать вычислительную мощность без предоплаты при почасовых ставках, намного ниже, чем по запросу. Единственное предостережение в том, что спотовые экземпляры будут закрыты с небольшим предупреждением, когда спотовая цена поднимается выше максимальной цены покупателя или если увеличивается емкость для экземпляров по требованию в этой зоне доступности. По этой причине точечные экземпляры обычно не являются хорошим выбором для приложений с состоянием или без облачных вычислений, которым требуется, чтобы экземпляр оставался доступным и сохранял состояние. Пользователи, заинтересованные в использовании точечных экземпляров, должны создать обширный инструментарий, чтобы иметь возможность развертывать свои приложения.В результате большинство пользователей уклоняются от использования точечных экземпляров из-за их непредсказуемого характера и необходимости создавать инструменты, несмотря на значительную экономию средств.

Использование Nirmata с точечными экземплярами

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

Эти приложения, наряду со сложными функциями планирования и управления Nirmata, идеально подходят для точечных экземпляров. Используя гибкие политики выбора ресурсов для группировки экземпляров по требованию с точечными экземплярами (например, 30% по требованию и 70% спот), наши пользователи смогли значительно сократить свои расходы на EC2 без ущерба для их гибкости и доступности приложения.

Спотовые запросы флота

Ранее в этом году Amazon запустила Spot Fleet API [1], что упростило предоставление спотовых экземпляров. Теперь мы добавили поддержку запросов Spot Fleet в Нирмате. Благодаря этой интеграции вы можете легко использовать точечные экземпляры для развертывания любого контейнерного приложения через Nirmata. И в случае, если экземпляр Spot уходит, Nirmata обнаружит завершение экземпляра Spot и превентивно повторно развернет контейнеры на доступных экземплярах до того, как экземпляр Spot будет завершен, обеспечивая постоянную доступность приложения. Обратите внимание, что для того, чтобы это работало, ваши контейнеры приложений должны быть без сохранения состояния. Есть способы включить это поведение для приложений с отслеживанием состояния, возможно, это тема для отдельного поста.

Вот шаги для использования точечных экземпляров с Nirmata:

1. Создайте AMI AWS с помощью докера и агента Nirmata и запишите идентификатор AMI. Подробности смотрите в документации:

sudo curl -sSL http://www.nirmata.io/nirmata-host-agent/setup-nirmata-agent.sh | sudo sh -s aws

2. Создайте запрос Spot Fleet и используйте созданный ранее AMI. Обратите внимание,  что вам потребуется использовать новую консоль запросов спотов, которая все еще находится в режиме предварительного просмотра, для создания запросов спотовых парков.

спот-случаи-1

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

спот-случаи-2

Затем выберите «Стратегию распределения» [2], «Сеть», «Группы безопасности», «Зоны доступности» и т. Д. И завершите работу мастера, чтобы создать запрос «Спотовый флот».

спот-случаи-3

 

 

3. После создания запроса Spot Fleet войдите в Nirmata и создайте облачного провайдера AWS, если у вас его еще нет, и приступайте к созданию группы хостов.

спот-случаи-4

На странице настроек выберите «Использовать запрос точечного флота» для экземпляров хоста, а затем выберите запрос точечного флота, который вы создали ранее, на шаге № 2. Завершите работу мастера.

спот-случаи-5

4. Вскоре вы увидите места, найденные и связанные с Нирматой.

спот-случаи-6

Это оно! Теперь ваша группа хостов доступна, и вы можете развернуть свое приложение. После развертывания приложения Nirmata продолжит его работу, даже если некоторые точечные экземпляры исчезнут, а другие точечные экземпляры будут подготовлены путем повторного развертывания контейнеров приложения.

Посмотрите это пятиминутное видео, чтобы узнать, как использовать Spot Fleet Requests с Nirmata.

Случаи использования

Наши клиенты использовали Spot Instances с Nirmata для нескольких различных сценариев:

  • Для развертывания и эксплуатации распределенных приложений в стиле микросервисов
  • Для моделирования IoT / подключенных устройств для тестирования
  • Для тестирования масштабирования и доступности их приложения

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

[1] https://aws.amazon.com/blogs/aws/amazon-ec2-spot-fleet-api-manage-thousands-of-instances-with-one-request/

[2] https://aws.amazon.com/blogs/aws/new-spot-fleet-option-distribute-your-fleet-across-multiple-capacity-pools/