Я пытаюсь настроить автоматическое восстановление для своего экземпляра EC2. Поэтому всякий раз, когда мой экземпляр выходит из строя или становится недоступным, он должен автоматически перезагружаться или запускать новый экземпляр, желательно в другой зоне доступности в том же регионе AWS.
Я изучил настройку будильника облачных часов и добавление действия для перезагрузки экземпляра в случае сбоя. Это хорошо работает, если я хочу, чтобы мой экземпляр EC2 просто перезагружался в случае сбоя.
Но это не распространяется на случай, когда зона АЗ недоступна. Итак, я пытаюсь настроить группу автомасштабирования AWS с минимальным / максимальным номером экземпляра как 1. В случае сбоя я хочу, чтобы новый экземпляр запускался с объемом EBS завершенного экземпляра. Как мне это сделать?
Или, если есть альтернативный способ достичь того, чего я хочу, это тоже будет оценено.
Поэтому я запускаю много отдельных серверов в ASG для автоматического восстановления.
Что я сделал, так это присвоил тому EBS метку набора.
При загрузке есть сценарий cloud-init, который использует api метаданных aws и интерфейс командной строки и получает собственный идентификатор экземпляра через API, а затем выполняет поиск тома EBS с установленным тегом в его собственной зоне доступности. Как только он получает идентификатор тома, он заставляет отключиться, чтобы быть в безопасности. Затем прикрепляет его к себе.
Пока это работало довольно хорошо.
Это то, что можно сделать, но я не думаю, что это будет легко.
Вам нужно будет использовать вторичный том для любых данных, которые вы хотите сохранить при перезапуске экземпляра. Я не верю, что вы можете создать экземпляр с существующим томом в качестве корневого раздела. По крайней мере, никаким разумным и легким способом.
Установите для EBS «Удалить при завершении» значение false, и пусть ваш сценарий запуска / конфигурации запуска будет сканировать неподключенные тома при запуске. Если вы обнаружите, что ваш том помечен как «KeepMeAlive: true» или что-то подобное, пусть он автоматически прикрепит этот том к себе.
Вы знаете о EFS или Amazon Elastic File System? Это служба хранения файлов для экземпляров EC2, и вы можете делать с ней то, что описали. Если вам не нужно блочное устройство (том EBS), попробуйте.
Вот хороший пример шаблона CloudFormation, который развертывает экземпляры EC2 в группе AutoScaling, связанной с файловой системой Amazon EFS: Образец шаблона Amazon Elastic File System