Рубрики
Uncategorized

Автоматическая группа масштабирования для ваших экземпляров MacOS EC2

Прошло почти год, так как я начал использовать экземпляры MacOS EC2 на AWS: там были взлеты и падения … Помечено с AWS, DevOps, учебником, архитектурой.

Это было почти год, так как я начал использовать экземпляры MacOS EC2 на AWS: там были взлеты и падения в обслуживании и много открытий с MacOS AMI Build Automation.

И мне нравится это маленькое, но так полезное обновление сервиса EC2.

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

Официальный/неофициальный автоматический масштабирование для MacOS

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

  • Масштаб Mac1.Метские экземпляры горизонтально
  • Автоматически выделить и отпустить выделенные хосты, необходимые для экземпляров
  • Автоматически заменить нездоровые экземпляры

Если вы работали с AWS ранее, вы знаете, что сервис группы автоматического масштабирования может решить такие вещи.

Тем не менее, официальная документация (по состоянию на октябрь 2021 г.) Штаты : «Вы не можете использовать экземпляры Mac с Amazon EC2 Auto Scaling».

Но на самом деле вы можете.

Объединение услуг, чтобы получить реальную власть

Так как все это работает?

Давайте рассмотрим диаграмму, которая иллюстрирует взаимосвязь между вовлеченными службами:

С помощью службы и шаблонов запуска Management Manager вы можете настроить группу автоматической масштабирования EC2 для Mac1.Metal и оставить автоматизированный экземпляр для предоставления услуг.

Настройка лицензии

Во-первых, вам необходимо создать конфигурацию лицензии, чтобы Группа ресурсов хоста можно выделить горячих.

Перейдите в AWS License Manager -> Управляемые клиентом лицензии -> Создать лицензию, управляемую клиентами.

Укажите Розетки как тип лицензии. Вы можете пропустить установку количества розетки. Тем не менее, фактический предел экземпляров MAC1.Метал на счет регулируется квотам службы. Количество экземпляров MAC по умолчанию, разрешенное за счет 3. Поэтому рассмотрим Увеличение Это до более значительного числа.

Группа ресурсов хоста

Во-вторых, создать группу ресурсов хоста: AWS Manersient Manager -> Группы ресурсов хоста -> Создать группу ресурсов хоста.

При создании группы Host Resource Group Check « выделить хосты автоматически » и « Выблокировать хосты автоматически », но оставьте «Восстановить хосты автоматически». Выделенный хост делает Не поддерживает Recovery Host для Mac1.МЕТИЛ. Тем не менее, Auto Scaling Group будет поддерживать желаемое количество экземпляров, если вы не удалите проверку здоровья (что предполагает случай сбоя хоста).

Кроме того, я рекомендую указать «MAC1» в качестве допустимого семейства экземпляра для прозрачного управления ресурсами: только этот тип экземпляра разрешен для выделения хостов в группе.

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

Шаблон запуска

Создать шаблон запуска: EC2 -> Шаблоны запуска -> Создать шаблон запуска.

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

Укажите MAC1.метал в качестве типа экземпляра. Позже, в продвинутых деталях: найдите Аренды параметр и установить его на «выделенный хост»; для Целевой хост по Выберите «Gost Resource Group», и однажды выбрали новый параметр Группа ресурсов аренды хост появится, где вы должны выбрать группу хостов; Выберите свою лицензию в Конфигурации лицензии параметр.

Автоматическая группа масштабирования

Наконец, создайте автоматический масштабирующий Группа: EC2 -> Автоматические группы масштабирования -> Создать группу масштабирования авто.

Здесь замечательная вещь — это наличие экземпляра MAC1.Метала в частности AZ.

МАК экземпляры доступны в США-Востоке-1 и Еще 7 регионов Но не каждая зона доступности в регионе поддерживает ее. Таким образом, вы должны выяснить, какой AZ поддерживает необходимый тип экземпляра.

Для этого нет документации, но есть команда AWS CLI, которая может ответить на этот вопрос: Описать-экземпляры-типа — Предложения типа AWS CLI 2.3.0

Вот пример для региона США-Востока-1:

> aws ec2 describe-instance-type-offerings --location-type availability-zone-id --filters Name=instance-type,Values=mac1.metal --region us-east-1 --output text

INSTANCETYPEOFFERINGS   mac1.metal  use1-az6    availability-zone-id
INSTANCETYPEOFFERINGS   mac1.metal  use1-az4    availability-zone-id

Сохраняйте этот нюанс в виду при выборе подсети для экземпляров MAC1.МЕТи.

Когда вы знаете AZ, укажите соответствующую подсеть в настройках группы автоматического масштабирования, и вы готовы к работе!

Принесите инфраструктуру как код здесь

Я предлагаю описывать все это как код. Я предпочитаю Terraform, и его провайдер AWS поддерживает необходимые ресурсы. Кроме одного.

По состоянию на октябрь 2021 года ресурсы поддерживаются:

Группа ресурсов хоста еще не поддерживается поставщиком, к сожалению. Тем не менее, мы можем использовать облачность в террафоре, чтобы преодолеть это: опишите группу ресурсов хоста, как aws_cloudformation_stack . Ресурс Terraform с использованием шаблона CloudFation от файла.

Вот как это выглядит как:

Нажмите здесь, чтобы увидеть фрагмент кода
Введите полноэкранный режим Выйдите из полноэкранного режима

И следующий фрагмент кода объясняет шаблон CloudFromation (который является Resource-Group-CF-Stack-Template.json Файл в фрагменте кода выше)

Нажмите здесь, чтобы увидеть фрагмент кода Введите полноэкранный режим Выйдите из полноэкранного режима

aws_cloudformation_stack . Ресурс экспортирует Дедакаторияgroup Атрибут (см. Код CloudFromation шаблона), который вы будете использовать позже в ресурсе запуска шаблона.

Pro Tips.

Если вы управляете организацией AWS, у меня хорошие новости: Группы хоста и лицензии поддерживаются Диспетчер доступа ресурсов услуга. Следовательно, вы можете принять все экземпляры MAC в одном аккаунте и поделитесь ими с другими учетными записями — например, это может быть полезно для распределения затрат. Также проверьте мой блог о AWS RAM Если вы очень новичок в этой услуге.

Чтобы решить «какой az поддерживает головоломку Mac Metal», вы можете использовать aws_ec2_instance_type_offerings. и aws_subnet_ids источники данных.

Расходы соображения

Лицензионный менеджер является бесплатно обслуживание , а также Автоматическое масштабирование и Шаблон запуска Отказ

Так что это все о цене для Mac1.Метский выделенный хост, который является $ 1,083 в час по состоянию на октябрь 2021 года. Тем не менее, Экономия планов может быть применено.

Обратите внимание, что минимальное время распределения для этого типа хоста составляет 24 часа. Может быть, когда-нибудь AWS изменит, что до 1 часа минимума (скрещенные пальцами).

Ой. Так. Asg.

Автоматическое масштабирование для MAC1.метала открывает новые возможности для CI/CD: вы можете интегрировать это в ваш любимый инструмент (Gitlab, Jenkins, Whatsover), используя AWS Lambda и предоставление новых экземпляров, когда ваша среда разработки/тестирования нуждается в этом. Или вы можете использовать другие крутые материалы ASG, такие как крючки жизненного цикла, чтобы создать еще более пользовательские сценарии.

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

Я полагаю, что AWS будет официально объявить все это в ближайшее время. Наряду с этим я с нетерпением жду объявления о AMIS на основе Monterey и, возможно, даже на основе микросхем M1 (будет ли он Mac2.metal?).

И я хочу сказать спасибо (спасибо, приятель!) к Oliverkoo , который начал копать в апрель 20021.

Сергий Василенкофоллоу

Оригинал: «https://dev.to/aws-builders/auto-scaling-group-for-your-macos-ec2-instances-fleet-57pj»