Подтвердить что ты не робот

Трюки, чтобы сделать экземпляр экземпляра AWS "постоянным"?

Мой клиент использует AWS для своих VPS. Одна вещь, с которой он сталкивается, состоит в том, что если ставки для экземпляра места превышают его ставки, то его экземпляры прекращаются. Казалось бы, не такая уж большая сделка, за исключением того, что спотовые экземпляры не являются постоянными, поэтому мы должны восстанавливать изображение каждый раз, когда это происходит.

То, что он хочет, это написать что-то, что будет проверять на завершенные экземпляры каждые X минут и автоматически перезапускать их. Что еще более важно, он хочет каким-то образом притвориться "настойчивостью". Лучшая идея, которую я имею, - просто создать изображение с каждого сервера за каждый промежуток времени Y, а затем загрузить с этого образа (если/когда этот экземпляр завершен).

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

ОБНОВЛЕНИЕ: Почти год спустя я возвращаюсь сюда, чтобы найти все эти замечательные ответы и гораздо больше внимания к теме, чем я когда-либо ожидал. Многие из нижеприведенных ответов, в то время как информативные и полезные, ставят под сомнение мои рассуждения. Я хочу сказать, что даже в то время я согласился на 100%, что это была не мудрая идея, а именно то, что мой клиент потребовал, несмотря на любую попытку с моей стороны, превратить вещи в лучшем направлении.

Спасибо вам большое за вашу помощь. Я в конечном итоге выяснил, как делать то, что я хотел, и смог написать код, который автоматически перезапускает завершенные экземпляры. Это было нелегко, но сработало хорошо, когда я перешел к новому клиенту.

Удачи любому из вас с той же проблемой, которую вы предпринимаете (возможно, силой, как и в моем случае), что будет непросто. Запросы с точки зрения дешевле, поскольку некоторые люди здесь ссылаются на свои ответы, в частности, потому что настойчивость не предлагается. В противном случае я предполагаю, что рынок "спот-запроса" будет стоить по-разному.

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

ОБНОВЛЕНИЕ II: Я просто хочу напомнить всем, что это то, над чем я был в основном поставлен. В то время как многие люди просто уволили всю концепцию в то время, у меня получилось более или менее функциональное SaaS, позволяющее легко управлять и отслеживать все экземпляры экземпляров, в том числе возможность включать/отключать автоматическое постоянное повторное включение в экземпляр, время расписания для отдельных экземпляров (что они должны или не должны быть запущены) и т.д.

Хотя я абсолютно согласен с тем, что, с точки зрения разработчика, это нелогичный спрос, и в то время я не хотел этого делать, я бы сказал, что это было вроде как приятно, требуя работать над этим, потому что я не только многому научился, не только получил большую уверенность в своих способностях и моем коде, но я создал действительно полезный и, насколько мне известно, очень ценный фрагмент программное обеспечение для моего клиента (даже если они просили неправильные вещи, потому что они не знали лучше).

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

Если бы это было глупо, это не спасло бы никаких денег.

Послушайте, я прочитал этот пост и немного съежился. Тогда я был намного более наивным. Я знаю AWS намного лучше, теперь, я кодирую намного лучше сейчас и т.д. Естественно.

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

Что делать, если это можно сделать выгодно? Вы уверены, что это не должно быть?

4b9b3361

Ответ 1

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

  • Создайте новый экземпляр запроса места. Обязательно снимите флажок "Удалить на завершение" для корневого устройства, чтобы объем остался на следующем шаге. Обязательно обратите внимание на архитектуру (мы всегда используем x86_64) и идентификатор ядра, который использует ваш экземпляр (очень важно!)
  • Теперь, SSH в ваш новый экземпляр и создайте файл или что-то еще, чтобы вы могли увидеть эффект персидского использования. После внесения некоторых изменений в файловую систему, перейдите и выйдите из SSH-соединения и завершите экземпляр.
  • Высокий. Теперь перейдите на свою веб-консоль EC2 и найдите новый том, который использовался для экземпляра, который мы только что завершили. Щелкните правой кнопкой мыши громкость и выберите "Создать изображение". Следуйте указаниям мастера, чтобы выбрать одну и ту же архитектуру и идентификатор ядра, которые мы отмечали ранее.
  • Теперь запустите мастер создания пятна с помощью нового изображения. Следуйте за мастером, снова сделав отметку, чтобы снять флажок "Удалить при завершении". Кроме того, и это простой шаг, чтобы пропустить, убедитесь, что вы развернули свернутый раздел под названием "Дополнительные параметры" и снова установили правильный идентификатор ядра.

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

Ответ 2

(Спасибо Итан Баррон за некоторые из оригинальных идей. Это версия с некоторыми исправлениями и разъяснениями.)

[1]. Создайте новый экземпляр пятна. Отключите "Удалить при завершении" для корневого устройства. Обратите внимание на архитектуру (x86_64) и идентификатор ядра.

[2]. SSH в ваш новый экземпляр и создать файл, который должен сохраняться за пределами перезагрузки. НЕ завершайте экземпляр еще.

[3]. Создайте моментальный снимок экземпляра, пока экземпляр все еще запущен (это может привести к несогласованности файловой системы в редких случаях, поэтому ограничьте запись на загрузочный том). Обратите внимание на имя этого моментального снимка.

[4]. Теперь выйдите из SSH-соединения и завершите экземпляр.

[5]. Создайте AMI из моментального снимка, созданного на шаге 3 (AWS не поддерживает создание AMIS из томов, это должен быть моментальный снимок. Если вы используете оставшийся том, есть дополнительный шаг: создание этого моментального снимка).

[6]. Запросите новый экземпляр пятна на основе архитектуры с шага 1, идентификатор ядра с шага 1 и AMI, созданный на шаге 5.

Это должно сработать.

Ответ 3

Обновление: время изменилось

Запросы EC2 Spot Instance теперь могут быть настроены на stop вместо terminate экземпляр outbid spot или для любого другого события, связанного с производительностью, которое вызывает прерывание экземпляра места.

См. Поведение прерывания в Руководстве разработчика EC2. Некоторые классы экземпляров могут также спячки с установленным соответствующим агентом.

Обратите внимание, что эта новая функция не гарантирует, что экземпляры будут продолжать выполняться, но только они будут перезагружаться с их предыдущими томами EBS, частным IP, Elastic IP и идентификатором экземпляра все неповрежденными.

Предыдущий ответ следует:


Точки Spot не могут быть постоянными, но могут быть запрошены точки.

Запросы постоянных мест. Когда вы указываете запрос ставки Spot как "постоянный", вы гарантируете, что он будет автоматически повторно отправлен после того, как его экземпляр будет завершен вами или Amazon EC2, пока вы не отмените запрос ставки. Это позволяет автоматизировать запуск экземпляров Spot в любое время, когда цена Spot ниже вашей максимальной цены.

http://aws.amazon.com/ec2/spot-instances/#4

Это позволяет машинам работать в любое время, когда цена находится в радиусе действия, но, как и все остальное, рассмотрите, что делают ваши спотовые экземпляры, и вы думаете, что упорство дисков - это путь. Думайте "облако". Думайте "эфемерные". Точки Spot предназначены для создания эфемерных машин, которые запускают, забирают работу, выполняют работу, выполняют работу, а если они уходят, работа все еще ожидает ожидание следующего экземпляра, завершение ее и ее фиксация. Вы "можете" использовать их с EBS и сохраняете том, но если вы это сделаете, эти экземпляры не могут быть перезапущены (как вы заметили).

Если ваш AMI использует хранилище экземпляров и сохраняет все, что должно быть постоянным извне (например, в S3), вам не нужно взламывать архитектуру AWS, и вы можете сидеть сложа руки и наблюдать за запуском ваших компьютеров когда цена верна, выполняет свою работу и снова закрывается, когда цены выходят за допустимые пределы. И, немного бит, потому что каждая загрузка - блестящая чистая система.

Или ваш экземпляр мог бы монтировать NFS файлы, экспортированные машиной, которая всегда включена.

Или это: https://serverfault.com/questions/448043/auto-attach-ebs-volume-to-a-new-spot-instance

Ответ 4

Я нашел удобное решение этой проблемы, если вы используете ubuntu. Он использует функцию "overlayroot", которая включена в дистрибутив ubuntu. Идея состоит в том, чтобы сохранить корневую файловую систему только для чтения и записать все изменения в файловую систему с перекрываемым EBS файлом. Поскольку корень доступен только для чтения, его можно удалить при завершении, и все изменения будут сохранены в файловой системе наложения.

  • Сначала создайте настраиваемый AMI, который позволяет использовать overlayroot. Используйте консоль AWS для запуска вашего любимого AMI. Войдите в систему и добавьте следующую строку в /etc/overlayroot.local.conf

    overlayroot=device:dev=/dev/xvdf,timeout=180,recurse=0

Используйте AWS для создания пользовательского AMI из вашего экземпляра "Экземпляры- > Действия- > Изображение- > Создать образ"

Теперь создайте и прикрепите том EBS к экземпляру. "Объемы- > Действия- > Прикрепить громкость", а затем инициализируйте громкость.

mkfs.ext4 /dev/xvdf

Этот первый экземпляр использовался только для создания пользовательского AMI и инициализации тома, поэтому его можно завершить. Не добавляйте том EBS до тех пор, пока вы не создадите собственное изображение, чтобы оно не было включено в изображение.

Следующие шаги должны выполняться каждый раз при запуске вашего экземпляра места.

  • Запустить пользовательский экземпляр. Не забудьте установить ценовое предложение.
  • После запуска экземпляра прикрепите том наложения к экземпляру в /dev/sdf.
  • Перезагрузите свой экземпляр. "Экземпляры- > Действия- > Состояние экземпляра- > Перезагрузка". После входа в систему вы должны увидеть что-то вроде этого

    [email protected]:~$ mount overlayroot on / type overlayfs (rw,discard) ... /dev/xvda1 on /media/root-ro type ext4 (ro,relatime,data=ordered) /dev/xvdf on /media/root-rw type ext4 (rw,relatime,data=ordered)

Ответ 5

Характер экземпляров пятен - они временны, поэтому вы не можете сделать экземпляр "постоянным". Однако вы можете сделать данные постоянными, используя EBS.

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

Вы всегда можете проверить документацию на точечные экземпляры или перейти к forums, чтобы узнать, есть ли у какого-либо из инженеров AWS какие-либо идеи.

- редактировать -

Не уверен, что это сработает - потому что это потребует дополнительных затрат, но вы всегда можете сразу запустить экземпляр из создаваемого вами изображения, как только его сгенерируют и завершают существующий экземпляр. Это даст иллюзию настойчивости, особенно если вы не полагаетесь на объем EBS для хранения данных.

Ответ 6

Недавно AWS запустила новую панель инструментов экземпляра Spot, которая упрощает сохранение вашего экземпляра в постоянном состоянии. Это также включало автоматическое ценообразование и поддержку региона, поэтому не нужно беспокоиться о том, чтобы предлагать идеальную цену. После запуска экземпляра создайте AMI экземпляра и его. В следующий раз, когда вы запросите экземпляр пятна, просто выберите этот экземпляр из списка Сохраненные экземпляры. Ядро и EBS восстанавливаются, как есть.