Сценарий
Я создаю сценарий, который запускает новые экземпляры в группу AutoScaling, а затем удаляет старые экземпляры. Цель состоит в том, чтобы представить недавно созданные (или обновленные) AMI группе AutoScaling. Это достигается за счет увеличения емкости Desired
на удвоение текущего числа экземпляров. Затем, после того, как новые экземпляры будут Running
, уменьшая емкость Desired
на то же число.
Проблема
Когда я запускаю сценарий, я наблюдаю, как емкость группы увеличивается вдвое, новые экземпляры подключаются к сети, достигают состояния Running
, а затем емкость группы уменьшается. Работает как шарм. Проблема в том, что ИНОГДА экземпляры, которые прекращаются из-за уменьшения, на самом деле являются новыми, а не старыми.
Вопрос
Как я могу гарантировать, что группа AutoScaling всегда завершает работу самого старого экземпляра?
Настройки
- Группа AutoScaling имеет следующие
Termination Polices
: OldestInstance, OldestLaunchConfiguration. ПолитикаDefault
была удалена. Default Cooldown
установлен на 0 секунд.- У группы есть только одна зона доступности.
Исправление проблем
- Я поигрался с настройкой
Cooldown
. В итоге просто поставил на 0. - Я ждал разное время, чтобы увидеть, должны ли существующие серверы работать в течение определенного времени, прежде чем они будут остановлены. Похоже, что если им меньше 5 минут, они с меньшей вероятностью будут прерваны, но не всегда. У меня были серверы, которым было 20 минут, которые не были отключены вместо новых. Возможно, у недавно запущенных экземпляров есть льготный период защиты от прерывания?
Концессия
Я знаю, что в большинстве случаев серверы, которые я буду заменять, будут работать долгое время. В производственной среде это может не быть проблемой. Тем не менее, возможно, что во время нормального режима AutoScaling старый сервер останется работающим вместо нового. Это неприемлемый способ работы.
Я мог бы принудительно завершить работу определенных экземпляров, но это нарушило бы суть OldestInstance
политики завершения.
Обновление: 12 февраля 2014 г. Я продолжаю видеть это в продакшене. Экземпляры со старыми конфигурациями запуска, которые работали в течение нескольких недель, останутся работающими, а новые экземпляры будут отключены. На данный момент я считаю это ошибкой. Пару лет назад на эту тему была открыта ветка на Amazon по этой теме. без разрешения.
Обновление: 21 февраля 2014 г. Я работал с сотрудниками службы поддержки AWS, и на данный момент они предварительно подтвердили, что это может быть ошибка. Они исследуют проблему.