#amazon-web-services #amazon-ec2 #amazon-ebs
Вопрос:
У нас есть рабочая нагрузка, которая значительно выигрывает от чрезвычайно быстрого ввода-вывода, а также от работы из существующего кэша. Рабочая нагрузка ввода-вывода потенциально может достигать 100 ГБ. В настоящее время я тестирую EBS gp3 10k IOPS, и это приемлемо, но могло бы быть и лучше.
Поддерживает ли Amazon какую-либо конфигурацию экземпляра, в которой я могу запросить загрузку своего экземпляра, сначала скопировав операционную систему и данные в временное локальное хранилище экземпляров с тома EBS, а также вернувшись обратно, когда я запрошу завершение работы?
Ответ №1:
Я думаю, что вы, возможно, подходите к этому с более сложной точки зрения, чем вам нужно.
Я думаю, что вам следует просто оставить ОС в томе EBS и просто использовать том хранилища экземпляров соответствующего размера для ваших рабочих данных.
Возможно, c5d.xlarge был бы хорошим выбором.
Кроме того, вам все еще нужно придумать решение для надежного копирования данных обратно в постоянное хранилище (EBS) при завершении работы… возможно, вы могли бы создать службу systemD, которая запускается при завершении работы и просто выполняет rsync; возможно, это приведет вас в правильном направлении: https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6
Кроме того, если вам нужен сценарий запуска, который запускается при каждой загрузке, вот дополнительная информация об этом: https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/
Наконец, чтобы ответить на ваш первый вопрос: «Поддерживает ли Amazon какую-либо конфигурацию экземпляра, в которой я могу запросить загрузку своего экземпляра, сначала скопировав операционную систему и данные в временное локальное хранилище экземпляров с тома EBS, а также обратно, когда я запрашиваю завершение работы?» Короткий ответ: Нет.
Ответ №2:
EC2 предоставляет такую функцию, как пользовательские данные — когда экземпляр создается при первой загрузке, мы можем выполнять некоторые сценарии, которые являются частью пользовательских данных. Эти сценарии запускаются только при первой загрузке, в случае остановки и перезапуска экземпляра они не будут выполняться.
Скрипт для использования данных может быть добавлен при создании экземпляра:
Теперь есть разница между остановкой экземпляра и его завершением. Если вы остановите экземпляр, содержимое хранилища эфемерных экземпляров не будет потеряно (дополнительная информация: срок службы экземпляра). Если вы завершите экземпляр, очевидно, что все пропало. Я разъясняю это. поскольку, согласно AWS, нет гарантии безопасного копирования данных в случае прекращения работы экземпляра (источник]:
Если вы запустите сценарий при завершении работы экземпляра, у вашего экземпляра может произойти ненормальное завершение, поскольку у нас нет возможности гарантировать выполнение сценариев завершения работы. Amazon EC2 пытается полностью закрыть экземпляр и запустить любые сценарии завершения работы системы; однако некоторые события (например, сбой оборудования) могут помешать запуску этих сценариев завершения работы системы.
Для сохранения данных из хранилища экземпляров решением было бы регулярное резервное копирование данных: https://aws.amazon.com/premiumsupport/knowledge-center/accidental-termination/
Комментарии:
1. Спасибо за информацию до сих пор. Мне непонятно, где я могу найти информацию о том, как писать сценарии пользовательских данных для копирования на/с тома EBS в/из локального хранилища?
2. Сценарии пользовательских данных добавляются в экземпляр EC2 при его создании. Я поместил скриншот в свой ответ. Чтобы скопировать в хранилище экземпляров, мы должны убедиться, что он смонтирован: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… Вы можете установить его везде, где захотите, а затем просто
cp
из одного места в другое.