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 работает, но правильный способ сделать это - создать скрипт инициализации, который будет:
- проверьте, установлен ли он
- если нет, получите метаданные с диска ephemeral0.
- если нет, отформатируйте том и смонтируйте его
Если вы не хотите создавать сценарий инициализации для этого, вы можете вставить несколько строк в /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.
Ура, Алексей Блю