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