Я хочу создать ASG, чтобы я мог повторно использовать существующие тома EBS (потому что у меня есть постоянные данные на этих томах) для новых экземпляров EC2, которые создаются через ASG. Это возможно?
Обновление скопировано из комментария
Чтобы прояснить свой первоначальный вопрос, я не пытаюсь прикрепить том EBS к двум экземплярам EC2 одновременно. Скорее, когда один экземпляр EC2 завершается, я хочу запустить новый экземпляр EC2 с предыдущим томом EBS вместо создания нового тома EBS.
IMO, вы можете попробовать сделать это так (я делаю что-то подобное, но с эластичными сетевыми интерфейсами). Это предполагает либо знание AWS CloudFormation
сервис или AWS CLI
:
AutoScaling group
минимального / максимального размера установлен на 1. Это гарантирует, что единственный экземпляр, когда он становится неработоспособным, будет заменен новым и исправным.UserData
раздел AutoScaling LaunchConfiguration
ресурс.UserData
будет выполнен после того, как том снова станет доступен (будет ли экземпляр завершен «быстро»?). Или вы можете выполнить некоторые проверки состояния, например описать метаданные тома, проверить его состояние и, когда он не используется, повторно прикрепить его.Быстрый пример в оболочке Linux bash:
INST_ID='i-xyzxyzxyz'
VOL_ID='vol-xyzxyzxyz'
VOL_STATUS=''
until [ "x$VOLUME_STATUS" == "xattached" ]; do
VOL_STATUS=$(aws ec2 describe-volumes --volume-ids $VOL_ID --query 'Volumes[0].State')
sleep 5
done
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $INST_ID --device /dev/sdh
InService
состояние, можно прикрепить объем. Он будет оставаться в этом состоянии до тех пор, пока вы не скажете группе продолжить (в противном случае по умолчанию время ожидания составляет 1 час). Это для масштабных событий или при запуске нового экземпляра. Когда он завершен или увеличен, он также может ждать сигнала. Вы должны отсоединить том и дать ему сигнал продолжить отключение.AWS CLI
Предполагается, что ваш экземпляр прикрепил правильный профиль экземпляра IAM, который позволяет подключать / отсоединять тома EBS или описывать их.Нет.
Группы автомасштабирования запускают несколько экземпляров EC2. Каждый том EBS можно подключить только к одному экземпляру EC2. Поэтому вам не следует этого делать, и, вероятно, это невозможно. Если у вас есть несколько томов и несколько экземпляров, вы, вероятно, можете реализовать некоторую сложную логику, чтобы заставить ее работать, но не следует - простые архитектуры, как правило, лучше.
Что вы можете сделать, так это запустить экземпляр EC2, обменивающийся данными через NFS, к которому обращается ASG, или вы можете использовать Эластичная файловая система AWS, но будьте осторожны, задержка относительно велика.
Если вы расширите свои требования и варианты использования, вы сможете получить более полезные ответы.
Обновить
Судя по дополнительным требованиям, это возможно. Это не стандартное требование, поэтому я не думаю, что для этого есть явная поддержка.
Я бы, вероятно, посмотрел на написание какого-нибудь сценария запуска, который связал бы том с экземпляром EC2, а затем смонтировал его. Есть ответь здесь что может быть полезно. Вероятно, это возможно при какой-либо настройке с помощью SNS и Lambda, но экземпляру EC2, вероятно, все равно потребуется что-то для запуска для сопоставления тома.
Кто-то другой может дать вам больше информации, мне никогда не приходилось делать ничего подобного.