Нет трафика от ELB до одного из экземпляров автоматического масштабирования - PullRequest
2 голосов
/ 15 февраля 2012

Мы используем автоматическое масштабирование, и оно работает довольно хорошо для нас, но сегодня с этим что-то случилось.Загрузка ЦП одного из Экземпляров по какой-то причине была равна% 0, что привело к использованию% 100 ЦП в остальных экземплярах в той же зоне доступности, и оно не увеличилось, поскольку Среднее использование ЦП всех экземпляров составило около 70%.в то время как триггер должен запустить новый экземпляр, когда ударил% 80.Проверка состояния экземпляра ELB также используется, но этот% 0 экземпляр был исправен.

Можно ли настроить автоматическое масштабирование для удаления таких экземпляров?Мы не хотим устанавливать какие-либо пользовательские cronjobs для проверок.

Auto Scaling Issue

1 Ответ

5 голосов
/ 15 февраля 2012

Обновление 2

Можно ли настроить автоматическое масштабирование для удаления таких экземпляров?

Да, см. Ниже - согласно вашим комментариям вы уже сделали это правильно.

Мы не хотим настраивать какие-либо пользовательские cronjobs для проверок.

Учитывая, что ваша конфигурация, по-видимому, правильная (что подразумевает соответствующую проблему с Auto Scaling и / или ELB), я боюсь, что невозможно избежать пользовательского решения, активно отключая неиспользуемые экземпляры или способствуя as-set-instance-health , как уже предлагалось в моемпервоначальный ответ ниже - первый предложен в ответе племенного скрещивания на ELB-Нездоровые экземпляры, взятые OOS, затем автоматически удаляются из ELB , что, похоже, решает вашу ситуацию:

Мы запускаемcronjob, который запускается каждые 5 минут для сканирования всех серверов в ELB, чтобы проверить, прослужил ли он более 5 минут, и является ли он нездоровым.Когда мы находим один, мы закрываем его.У нас были проблемы с «мертвыми» экземплярами, застрявшими в ELB и отбрасывающими метрики мониторинга, которые запускают действия по автоматическому масштабированию, и этот cronjob решил эту проблему для нас.


Обновление 1

Проверка работоспособности экземпляра ELB также используется, но этот экземпляр% 0 был исправен.

К какому индикатору работоспособности вы обращаетесь и как вы пришли к выводу, что экземпляр работоспособный в свою очередь?

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

Проверки ELB на прикладном уровне при автоматическом масштабировании проверок на машинном уровне.

Эта разница более подробно описана в ответе команды AWS на связанный вопрос ELB-Нездоровые экземпляры, полученные OOS, затем автоматически удаляются из ELB (что фактически решает обратную проблему):

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

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

Заключение

Похоже, вышеупомянутый сценарий может действительно применяться к вашему опыту: ELB прекратил отправлять трафик наваш экземпляр, потому что проверка работоспособности ELB завершилась неудачно , в то время как проверка работоспособности Auto Scaling не обнаружила проблемы с экземпляром какнапример;это может произойти, например, если проверка работоспособности ELB проверяет веб-страницу, обслуживаемую Apache, которая по какой-либо причине не отвечает (например, сбой Apache или другое).

Решение

Необходимо настроить Политика автоматического масштабирования , чтобы основывать свое решение о состоянии здоровья на обоих состояниях EC2 и на состоянии ELB, как описано в разделе Создание состоянияПроверка эластичной балансировки нагрузки в пределах текущего уровня масштабирования :

По умолчанию автоматическое масштабирование использует состояние работоспособности Amazon EC2 для всех экземпляров, управляемых автоматическим масштабированием.Чтобы также использовать проверку работоспособности Elastic Load Balancer, установите для свойства HealthCheckType группы значение ELB:

% as-update-autoscaling-group myGroup –-health-check-type ELB

С этой конфигурацией экземпляр будет считаться нездоровым, как только провал проверки работоспособности ELB, и он будет соответственно заменен.


Начальный ответ

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

К сожалению, нет, см. Например ответ команды AWS на Как установить несколько триггеров в шаблоне :

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

Альтернативным подходом может быть реализация пользовательского решения с помощью as-set-instance-health , как упомянуто в разделе Выборочная проверка состояния в Поддержание текущего уровня масштабирования :

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

...