Можем ли мы передать команду CLI в пользовательских данных для EC2 для автоматического подключения и монтирования тома EBS?

#amazon-web-services #amazon-ec2 #high-availability

#amazon-web-services #amazon-ec2 #высокая доступность

Вопрос:

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

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

 #!/bin/bash
EC2_INSTANCE_ID=$(ec2metadata --instance-id)
aws ec2 attach-volume --volume-id vol-777099d8 --instance-id $EC2_INSTANCE_ID --device /dev/sdk


#!/bin/bash
echo "aws ec2 attach-volume --volume-id vol-777099d8 --instance-id $(ec2metadata --instance-id) --device /dev/sdk" > /tmp/xyz.sh
sudo chmod 755 /tmp/xyz.sh
sudo sh /tmp/xyz.sh 2>> 


#!/bin/bash
var='ec2 attach-volume --volume-id vol-777099d8 --instance-id $(ec2metadata --instance-id) --device /dev/sdk'
aws "$var"


aws ec2 attach-volume --volume-id vol-777099d8 --instance-id $(ec2metadata --instance-id) --device /dev/sdk
  

Ценю вашу помощь!

Ответ №1:

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

Я думаю, вам следует немного пересмотреть свою архитектуру, потому что попытка сделать это вызывает у меня красный флаг. Во-первых, в архитектуре HA не должно быть запущено ни одного экземпляра. Хорошая архитектура останется HA, поскольку экземпляры масштабируются вверх и вниз. Если у вас есть данные, которые должны быть доступны более чем одному экземпляру, вам следует использовать S3 или EFS для хранения этих данных, а не тома EBS.