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

Могу ли я повторно использовать том EBS с AWS ASG?

Я хочу создать ASG, чтобы я мог повторно использовать существующие тома EBS (потому что у меня есть постоянные данные на этих томах) для новых экземпляров EC2, которые создаются через ASG. Это возможно?

Обновление скопировано из комментария

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

IMO, вы можете попробовать сделать это так (я делаю что-то подобное, но с эластичными сетевыми интерфейсами). Это предполагает либо знание AWS CloudFormation сервис или AWS CLI:

  1. Создать том EBS
  2. Создать голый AutoScaling group минимального / максимального размера установлен на 1. Это гарантирует, что единственный экземпляр, когда он становится неработоспособным, будет заменен новым и исправным.
  3. Прикрепите том к экземпляру из UserData раздел AutoScaling LaunchConfiguration ресурс.
  4. Теперь, что происходит с томом, когда экземпляр будет остановлен? Новый запускается группой AutoScaling. Том будет оставаться подключенным / используемым до тех пор, пока старый том не будет отключен. После этого том снова станет доступен, и его можно будет присоединить к новому экземпляру.
  5. Прикрепление / повторное прикрепление тома больше связано с определением времени для такого действия. Вы можете слепо предположить 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
  1. Если вы хотите, чтобы он был более устойчивым, вы можете попробовать использовать Хуки жизненного цикла AutoScaling. Прежде чем экземпляр будет помещен в InService состояние, можно прикрепить объем. Он будет оставаться в этом состоянии до тех пор, пока вы не скажете группе продолжить (в противном случае по умолчанию время ожидания составляет 1 час). Это для масштабных событий или при запуске нового экземпляра. Когда он завершен или увеличен, он также может ждать сигнала. Вы должны отсоединить том и дать ему сигнал продолжить отключение.
  2. Все AWS CLI Предполагается, что ваш экземпляр прикрепил правильный профиль экземпляра IAM, который позволяет подключать / отсоединять тома EBS или описывать их.

Нет.

Группы автомасштабирования запускают несколько экземпляров EC2. Каждый том EBS можно подключить только к одному экземпляру EC2. Поэтому вам не следует этого делать, и, вероятно, это невозможно. Если у вас есть несколько томов и несколько экземпляров, вы, вероятно, можете реализовать некоторую сложную логику, чтобы заставить ее работать, но не следует - простые архитектуры, как правило, лучше.

Что вы можете сделать, так это запустить экземпляр EC2, обменивающийся данными через NFS, к которому обращается ASG, или вы можете использовать Эластичная файловая система AWS, но будьте осторожны, задержка относительно велика.

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

Обновить

Судя по дополнительным требованиям, это возможно. Это не стандартное требование, поэтому я не думаю, что для этого есть явная поддержка.

Я бы, вероятно, посмотрел на написание какого-нибудь сценария запуска, который связал бы том с экземпляром EC2, а затем смонтировал его. Есть ответь здесь что может быть полезно. Вероятно, это возможно при какой-либо настройке с помощью SNS и Lambda, но экземпляру EC2, вероятно, все равно потребуется что-то для запуска для сопоставления тома.

Кто-то другой может дать вам больше информации, мне никогда не приходилось делать ничего подобного.