Я обедаю на экземпляре для размещения узла Cassandra и тестирую несколько сценариев выключения и запуска. Экземпляр был запущен с помощью DataTax PV AMI ami-8932ccfe. Я добавил 8 ГБ хранилища SSD EBS для root и запустил его. При первом запуске Instance Store (временный диск) был подключен, и все было в порядке. Я остановил экземпляр и запустил его снова, и хранилище экземпляров исчезло, и при входе в систему появилось следующее сообщение об ошибке:
ERROR mount -a:
Затем я завершил работу экземпляра, перезапустил тот же AMI и настройку, затем сделал снимок AMI и добавил туда хранилище экземпляров, пытаясь «запечь» его в экземпляре. Однако при остановке и запуске у меня такая же проблема.
Моя проблема в том, что у меня есть разрешение только на остановку и запуск экземпляров, я не могу создавать их сам, поэтому мне приходится беспокоить колледж, чтобы помочь мне запустить их. Я хочу иметь возможность останавливать экземпляр в конце дня и запускать его снова утром, то есть в рабочее время, чтобы сократить любые расходы. Рассматриваемый сервер является всего лишь экземпляром разработки, поэтому я не беспокоюсь о потере данных, все, что мне нужно запустить при запуске, - это несколько сценариев для создания таблиц. Однако, поскольку хранилище экземпляров не подключается автоматически при запуске, 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
Ура, Алексей Синий.
Тома хранилища экземпляров удаляются каждый раз при остановке экземпляра. Я не уверен, какой протокол распределения данных запущен, но правильный способ сделать это - создать сценарий инициализации, который:
Если вы не хотите создавать скрипт инициализации для этого, вы можете вставить несколько строк в /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 привел меня к новому исследованию, и я нашел это сценарий на гитхабе.
По сути, мой экземпляр использует другое соглашение о схеме устройства. 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.
Ура, Алексей Синий