ECS с постоянными данными на EFS или EBS с CloudFormation

Я ищу эксперта в AWS, чтобы помочь мне с этим. Я потратил почти неделю, пытаясь развернуть свой образ докера бэкэнда в AWS без 100% желаемого поведения.

Сначала мне предложили опробовать новый сервис Fargate, недавно предоставленный AWS. Мне удалось развернуть все, что мне было нужно, но быстро оказалось, что мне нужен любой тип сохранения данных, который пока недоступен Fargate из того, что я прочитал.

Я нашел эти шаблоны, которые очень полезны, потому что AWS слишком большой и громоздкий, поэтому я бы ничего не делал без них и в настоящее время пробовал развертывание с использованием экземпляров EC2. https://github.com/awslabs/aws-cloudformation-templates/tree/master/aws/services/ECS/EC2LaunchType

У меня вопрос к этому виду развертывания:
1: Почему это развертывание создает 2 экземпляра EBS для кластера? Один 8 ГБ со снимком и второй с 22 ГБ без снимка.

2: возможно ли уменьшить размер этих томов EBS?? Если так, как?

3: возможно ли иметь только один из этих EBS?

4: возможно ли смонтировать объем из моего внутреннего образа докера в эти тома EBS для сохранения данных? Если так, как? Мне нужно смонтировать два тома для моего бэкэнда/root/.local/share/Bisq/root/.local/share/bisq-api или же ~/.local/share/Bisq~/.local/share/bisq-api Я не совсем уверен, как это работает с AWS. Каковы пути по сравнению с шагами в локальной среде.

5: было бы лучше использовать EBS или EFS для сохранения данных? Проблема с EFS заключается в том, что я не могу найти никаких связанных документов, как подключить EFS к этому виду развертывания ECS. Все ДОЛЖНО быть с использованием шаблонов CloudFormation

В целом, требования, которые соответствуют 100% желаемому поведению:

1: Шаблон CloudFormation /tempalte, которые развертывают необходимые сервисы как можно меньше, чтобы не создавать огромную инфраструктуру для сохранения затрат и возможности просто нажать кнопку и получить внешнюю ссылку на бэкэнд-сервис. (Не может быть никакой ручной настройки, все должно быть автоматизировано)

2: Возможность остановить / запустить EC2 instace для внутреннего контейнера (EC2 будет работать с нескольких минут до нескольких часов в день / несколько дней в месяц. (В зависимости от сценария пользователя, как часто он будет использовать внутренний сервер)

3: Возможность сохранить данные, когда пользователь останавливает экземпляр и затем запускает его в будущем.

Буду признателен за любую помощь / предложения, потому что я начинаю терять свою ГОЛОВУ за все, что связано с сервисами AWS. Это действительно огромная проблема, чтобы понять любые варианты использования AWS, поэтому я был бы признателен за помощь

Спасибо!

2 ответа

1: Почему это развертывание создает 2 экземпляра EBS для кластера? Один 8 ГБ со снимком и второй с 22 ГБ без снимка.

Согласно документам:

AMI, оптимизированные для Amazon ECS, начиная с версии 2015.09.d и более поздних версий, запускаются с томом объемом 8 ГБ для операционной системы, который подключен в /dev/xvda и подключен в качестве корня файловой системы. В / dev / xvdcz есть дополнительный том объемом 22 ГБ, который Docker использует для хранения изображений и метаданных.

Вот ссылка: ecs-ami-storage-config

2: возможно ли уменьшить размер этих томов EBS?? Если так, как?

Также из тех же документов:

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

3: возможно ли иметь только один из этих EBS?

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

4: возможно ли смонтировать том из моего внутреннего образа докера в эти тома EBS для сохранения данных? Если так, как? Мне нужно смонтировать два тома для моего бэкэнда, который является /root/.local/share/Bisq /root/.local/share/bisq-api или ~/.local/share/Bisq ~/.local/share/bisq-api Я не совсем уверен, как это работает с AWS. Каковы пути по сравнению с шагами в локальной среде.

Это настраивается в определении задачи: AWS:: ECS:: TaskDefinition

Type: AWS::ECS::TaskDefinition
Properties: 
  Volumes:
    - Volume Definition
  ...

5: было бы лучше использовать EBS или EFS для сохранения данных? Проблема с EFS заключается в том, что я не могу найти никаких связанных документов, как подключить EFS к этому виду развертывания ECS. Все ДОЛЖНО быть с использованием шаблонов CloudFormation

Это зависит от вашего сценария использования. Каждый из них имеет свои преимущества и недостатки в зависимости от ваших потребностей, поэтому лучше прочитайте документы для каждого и соответственно выберите лучший. В найденных шаблонах вы можете настроить пользовательские данные LaunchConfiguration для запуска команд присоединения. Вы можете сделать все это в CloudFormation.

Кроме того, я оставлю вам эту документацию для автоматического монтирования EFS: Автоматическое монтирование файловой системы Amazon EFS

Стоит отметить, что aws только что объявили, что вы можете использовать ebs с fargate, но выражение этого через облачную информацию еще не поддерживается.

https://aws.amazon.com/blogs/containers/amazon-ecs-on-aws-fargate-now-enables-customers-to-configure-ephemeral-storage-up-to-200gib/

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-volumes

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

Другие вопросы по тегам