Обновление 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, чтобы отправить здоровье экземпляра
информация напрямую из вашей системы в автоматическое масштабирование.