EC2 Прикрепить хранилище экземпляров при запуске

Я готовлю экземпляр для размещения узла Cassandra и тестирую некоторые сценарии завершения работы и запуска. Экземпляр был запущен с PV A AMI-8932ccfe данных. Я добавил 8 ГБ хранилища SSD EBS для root и запустил его. При первом запуске Instance Store (эфемерный диск) был подключен, и все было хорошо. Я остановил экземпляр и снова запустил его. Хранилище экземпляров исчезло, и при входе в систему отображалось следующее сообщение об ошибке:

ERROR mount -a:

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

Моя проблема в том, что у меня есть только разрешение останавливать и запускать экземпляры, я не могу создавать их самостоятельно, поэтому мне нужно продолжать беспокоить колледж, чтобы помочь мне запустить их. Я хочу иметь возможность остановить экземпляр в конце дня и запустить его снова утром, т. Е. В рабочее время, чтобы сократить любые расходы. Рассматриваемый сервер является просто экземпляром разработки, и поэтому я не беспокоюсь о потере данных, все, что мне нужно для запуска при запуске, - это несколько сценариев для создания таблиц. Однако, поскольку Instance Store не присоединяется автоматически при запуске, Cassandra не устанавливается.

Может кто-нибудь сказать мне, как создать экземпляр, чтобы хранилище экземпляров автоматически подключалось после остановки и запуска?

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

curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0
root

curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
sdb

Ура, Алексей Блю.

2 ответа

Тома хранилища экземпляров удаляются каждый раз, когда экземпляр останавливается. Я не уверен, какой дистрибутив datastax работает, но правильный способ сделать это - создать скрипт инициализации, который будет:

  1. проверьте, установлен ли он
  2. если нет, получите метаданные с диска ephemeral0.
  3. если нет, отформатируйте том и смонтируйте его

Если вы не хотите создавать сценарий инициализации для этого, вы можете вставить несколько строк в /etc/rc.local сделать то же самое. Что-то вроде:

mount | awk '{print $3}' | grep -sq /mnt
test $? && exit 0
curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/ | grep -sq ephemeral0
test $? && DEV=`curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0`
test -n "$DEV" && mkfs -t ext4 /dev/$DEV
test $? && mount /dev/$DEV /mnt

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

Скрипт @dialtOne привел меня к новым исследованиям, и я нашел этот скрипт на github.

По сути, мой экземпляр использует другое соглашение о схеме устройства xvdb

Одна вещь, которую мне пришлось изменить в этом скрипте, это строка 62:

mdadm --create --verbose /dev/md0 --level=0 -c256 --raid-devices=$ephemeral_count $drives

Тоже следующее:

mdadm --create --verbose /dev/md0 --level=0 -c256 --force --raid-devices=$ephemeral_count $drives

Если у вашего экземпляра есть одно эфемерное влечение, как у моего, вам нужно использовать --force чтобы получить команду для запуска.

После того, как сценарий закончился, мне было очень приятно увидеть это:

df -h
...
/dev/md0  30G  173M  28G  1%  /mnt

Еще раз спасибо за ваш ответ @dialtOne.

Ура, Алексей Блю

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