2012-06-04 1 views
6

Я прочитал почти всю документацию, даже за пределами API AWS AS, чтобы понять все вещи AS.API автоматического масштабирования Amazon для рабочих серверов

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

Скажите, что у меня есть набор рабочих серверов в группе AS, каждый из которых работает над заданием, и вдруг наступает время (я не знаю, AVG CPU больше или в другом случае менее 80%) для масштабирования вверх или вниз.

Мое главное беспокойство - потеря текущей работы. Может быть, это было бы лучше всего объяснить на примере:

  • Я запуск 5 серверов заданий с 5 рабочими местами на них
  • Задания заканчивается на одном и выстреливает шкалу вниз триггер в API Amazon
  • Amazon приходит к масштабировать их
  • я теряю сервер работу, которая на самом деле в настоящее время работает на работу (начало 90% полная должен снова)

Имея это в виду, это лучше для меня, чтобы просто использовать Amazon пятно Instance/EC2 API и просто управлять своим собственным масштабированием или есть что-то, что мне не хватает в том, как API-интерфейс Amazon одобряет завершение работы сервера?

Честно говоря, я довольно масштабироваться до SQS ждет сумму, чем какой-то медицинской фигуры на серверах:

  • на каждые 100 сообщений, ожидающих мощности кластера увеличение на 20%

Но это не кажутся слишком жизнеспособными с AS.

Так что API AWS AS не является правильным решением или мне не хватает важной информации о том, как это работает?

Спасибо,

+0

Теоретически, не следует ли это работать, если вы пишете сценарий, который заканчивает все задания чистым способом, а затем помещает его в/etc/rc0.d? Я использую AS только для экземпляров веб-сервера, где такие проблемы не имеют большого значения, поэтому я не знаю точно. –

+0

Интересно, так что ваше высказывание я могу остановить AWS от закрытия, добавив rc, что даже возможно, я должен проверить, что – Sammaye

+0

Хотя в принципе это немного жесткое исправление, если оно действительно работает, возможно, мне лучше просто управлять своим масштабированием для рабочих мест? Как вы говорите, вы обычно используете его только для экземпляров веб-сервера – Sammaye

ответ

7

После некоторых поисков я обнаружил, что есть два общепринятых способа управления AS API или AS в целом для рабочих мест:

Один из способов заключается в манипулировании здоровья сервера непосредственно из сам работник. Это то, что делает довольно много сайтов, и это эффективно, когда ваш работник не обнаруживает больше рабочих мест или избыточности в системе, он отмечает, что сервер работает как нездоровый. Таким образом, API AS приходит и автоматически убирает его через некоторое время.

Таким образом, с помощью этого метода вы должны иметь политику масштабирования, основанную на размере очереди SQS, в течение определенного периода времени (например, каждые 5 минут сообщений SQS, содержащих более 100 дополнительных серверов, каждые 10 минут сообщений SQS 500 двойных сетей на 50%). Уменьшение масштаба будет осуществляться с помощью кода вместо активной политики.

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

Преимущества:

  • Простота установки
  • Использование функций API AWS
  • Вероятно, самый быстрый в установке
  • Использование AWS управляемого API для управления размером кластера для вас,

Недостатки:

  • Трудно управлять без использования полного AWS API, т. Е. При создании нового сервера вы не можете получить его экземпляр обратно без выполнения полной команды API возврата всех экземпляров экземпляров. Есть и другие случаи, с которыми AWS AS API мешает вам и делает жизнь немного сложнее, если вы хотите элемент самоконтроля над вашим кланом.
  • Опираясь на Amazon, чтобы узнать, что лучше для вашего кошелька. Вы полагаетесь на API Amazon для правильной масштабирования, это преимущество для многих, но для кого-то невыгодно.
  • Работник должен содержать код вашего пула серверов, означающий, что рабочий не является общим и не может сразу быть перемещен в другой кластер без какого-либо изменения конфигурации.

Имея это в виду, есть второй вариант - DIY. Вы используете экземпляр экземпляра EC2 и API-интерфейс Demand Instance API, чтобы создать свой собственный AS API, основанный на ваших пользовательских правилах. Это довольно просто объяснить:

  • У вас есть CLI сценарий, который при запуске начинается, скажем, 10 серверов
  • У вас есть cronjob, что при обнаружении утоления определенных условиях падения серверов или взлетов больше

Преимущества:

  • простая и чистая, чтобы управлять ваш конец
  • Можно сделать общие рабочие
  • Пул сервера может начать управлять множеством кластеров
  • Вы можете сделать правила и что не совсем сложно получить цифры из метрик на AWS и использовать их со сравнением и диапазонами времени, чтобы понять, должны ли вещи меняться.

Недостатки:

  • Трудно получить мульти-регион (не так уж и плохо для SQS, так как SQS является один регионом)
  • Трудно иметь дело с ошибками в ресурсном потенциале региона и объемом работы
  • Вы должны полагайтесь на свое время безотказной работы серверов и свой собственный код, чтобы гарантировать, что cronjob работает как следует, и предоставляет серверы по мере необходимости и разбивает их, когда это необходимо.

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

Надеется, что это помогает людям,

EDIT: Обратите внимание, ни с одним из этих методов, вы по-прежнему требуете функций на вашей стороне, чтобы предсказать, как вы должны предложить цену, как таковые вам нужно будет назвать историю ставка API на вашем (тип EC2) и вычислить, как делать ставки.

Другое Изменить: Еще один способ автоматического обнаружения избыточности в системе - проверка пустой метрики ответов для вашей очереди SQS. Это количество раз, когда ваши сотрудники пинговали очередь и не получали ответа. Это довольно эффективно, если вы используете эксклюзивную блокировку в своем приложении на время работы.

+0

Для первого решения, как вы обрабатываете желаемую емкость группы автомасштабирования? Действительно, если выполнялось действие автомасштаба (масштабирование), то желаемая емкость была равна 2. Если мы просто закроем экземпляр, тогда группа автомасштабирования воссоздает новый экземпляр. –

+0

@TalalMAZROUI Действительно, он не будет управлять вашим размером масштабирования только тех серверов, которые будут удалены. Если вы делаете очередь заданий, я нашел гораздо лучший способ, хотя у него нет выборочного контроля над тем, как снимать серверы.Вы можете использовать размер Amazon SQS, чтобы понять, следует ли уменьшить масштабную группу до размера, взгляните на шаблон, который я использовал для распределенного видеокодера: https://github.com/Sammaye/vidcoder_cloudformation вы увидите как я использую свойства автоматического масштабирования в очереди, чтобы определить размер группы автоматического масштабирования. – Sammaye

+0

@TalalMAZROUI Просто перечитайте мой ответ, первый сценарий включает в себя как работоспособность сервера, так и SQS. Я также понял, что вы сказали «желаемая емкость», и в этом случае да, AWS всегда будет пытаться распределять два сервера, даже если ваша политика масштабирования говорит, что это не так. Если вы хотите, чтобы он работал с кластерами с нулевым основанием, вам необходимо определить размер требуемого кластера 0. – Sammaye

1

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

Подводя итог, что вы должны сделать, это:

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

Вы можете сделать все, что с помощью AWS API.

+0

. Защита от прекращения передачи данных предназначена для предотвращения прерывания. На самом деле автоматическое масштабирование предназначено для работы без защиты терминалов, поскольку экземпляры должны быть созданы и завершены по желанию в зависимости от определенных параметров на серверах и т. Д., Поэтому использование защиты терминалов с автоматическим масштабированием является чем-то вроде победы над точкой. – Sammaye

+0

Да, но поскольку автомасштабирование не позволяет нам прекратить экземпляр при некоторых условиях, нам необходимо найти обходное решение –

+1

Это неверно, в соответствии с: http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide /AS_Concepts.html#AutoScalingBehavior.InstanceTermination ------------------------ «Если вы активировали атрибут защиты завершения экземпляра на своих экземплярах по требованию в своем Auto Scaling group, Auto Scaling переопределит атрибут и завершает экземпляр. " – robbyt