ASG part 2 Flashcards
ASG Lifecycle для scale out
Какие события происходят? Какие статусы им соответствуют?
Когда ASG
выполняет Scale Out
, то она запускает новый EC2 instance.
- Этот EC2 instance сначала находится в состоянии
Pending
- “запускается” - А после запуска переходит в состояние
In Service
- “работает”
ASG Lifecycle для scale in
Какие события происходят? Какие статусы им соответствуют?
Когда ASG
выполняет Scale In
, то она терминирует EC2 instance.
- Сначала EC2 instance переходит в состояние
Terminating
- После остановки - в состояние
Terminated
На основании событий scale out, какие lifecycle hooks доступны?
Что можно в них сделать?
Один хук EC2_Instance_Launching
Можно выполнить script
На основании событий scale in, какие lifecycle hooks доступны?
Что можно в них сделать?
Как можно автоматизировать эти действия?
Один хук EC2_Instance_Terminating
Можно произвести troubleshooting, почитать логи
Автоматизировать можно так
1. В хуке EC2_Instance_Terminating
выбрасываем CloudWatch Event.
2. CloudWatch Event вызывает SSM Run Command
3. SSM Run Command
собирает логи из терминированного instance’а
ASG Event Notification
На что это похоже?
С какими сервисами связан?
Какой способ лучше?
Почему?
Похоже на S3 Event Notifications
ASG умеет слать нотификации в SNS, EventBridge
Лучше в EventBridge, потому что там больше событий можно отследить.
- В SNS можно слать только успешный/НЕуспешный запуск/терминация
- В EventBridge дополнительно можно слать события Instance Refresh (начат, отменён, закончен, успешно/НЕуспешно)
Какую проблему решает фича Warm Pool?
Какие есть другие решения этой проблемы?
Проблема
Во время Scale Out
активности происходит запуск новых EC2
Нужно чтобы они запускались как можно более быстро.
Но у них есть initialization/boot фаза, которая берёт время.
Стандартные решения проблемы
- over-provisioning
(содержать много EC2 instance
’ов с запасом)
- golden image
(пихать как можно больше в него)
Что такое Warm Pool?
Чем он отличается от ASG?
Как влияет на метрики CloudWatch?
Warm Pools
- это EC2 instance’ы,
которые запущены ЗАРАНЕЕ,
но НЕ входят в ASG.
Во время Scale Out
события
instance из Warm Pool
’а переходит в ASG.
Таким образом НЕ тратится время на boot
фазу.
EC2 instance
’ы из Warm Pool
‘а НЕ влияют на ASG метрики
Как подобрать размер Warm Pool’а?
Как его оптимизировать?
Размер Warm Pool
’а должен быть равен разнице между current
и max
ASG capacity.
Например
- current
ASG capacity = 1_000
instance’ов,
- max
ASG capacity = 1_500
instance’ов
Тогда Warm Pool
capacity должен быть 500
instance’ов
А лучше даже ещё МЕНЬШЕ, потому что все 500 разом точно НЕ пригодятся.
В каких состояниях могут быть Instance’ы в Warm Pool’е?
Как иметь наибольшую скорость?
Как максимально сэкономить деньги?
Какой вариант наиболее сбалансирован по цене/скорости?
EC2 instance’ы в Warm Pool
’е после инициализации могут
- быть в состоянии running
- перейти в состояние stopped
, hibernated
- Состояние running - по сути это over-provisioning
- Состояния stopped - платим только за EBS, самое дешёвое
- Состояние hibernated - платим только за EBS, при этом в EBS “запечатана” оперативная память - идеальный баланс цена/скорость
Что такое “Instance Reuse” Policy?
Это опция в Warm Pool
- По-умолчанию ASG
- терминирует instance’ы, когда делает Scale In
- создаёт новые instance’ы в Warm Pool
’е
- Если выбрать “Instance Reuse” Policy, то
- instance вернётся в Warm Pool
, когда делает Scale In