Как отлаживать экземпляры EC2, когда пользовательские проверки работоспособности не проходят
У меня есть группа автоматического масштабирования с EC2, которая реализует собственное здоровье. Время от времени проверка работоспособности завершается неудачно, и экземпляры прекращаются и заменяются.
Сама проверка работоспособности реализована в виде сценария оболочки, который выполняется на экземплярах. Если он обнаружит проблемы, он сообщит группе автоматического масштабирования через AWS API:
aws autoscaling set-instance-health --instance-id $instance --health-status Unhealthy
Проблема только в том, что у меня нет информации о том, что проверка не прошла, кроме уведомления:
Причина: в 2017-06-13T09:11:47Z экземпляр был отключен в результате проверки работоспособности пользователя.
Каков рекомендуемый способ устранения проблем такого типа. Есть ли способ заставить AWS только останавливать экземпляры, а не прерывать их, чтобы можно было проверить их состояние диска?
(Сначала я подумал о "включить защиту от прерывания", но, насколько я понимаю, это не будет иметь значения, здесь. Группа автоматического масштабирования будет по-прежнему завершать случаи, когда завершение работы было запрошено из-за неудачной пользовательской проверки работоспособности.)
1 ответ
С использованием set-instance-health
Команда сообщает Auto Scaling, что экземпляр является нездоровым и нуждается в замене. Автоматическое масштабирование завершит работу нездорового экземпляра и запустит новый, чтобы заменить его.
Если вы хотите выполнить судебный анализ на нездоровом экземпляре, удалите его из группы автоматического масштабирования с помощью aws autoscaling detach-instances
команда:
Удаляет один или несколько экземпляров из указанной группы автоматического масштабирования. После отсоединения экземпляров вы можете управлять ими независимо от группы автоматического масштабирования.
Если вы не укажете опцию уменьшения желаемой емкости, автоматическое масштабирование запускает экземпляры, чтобы заменить те, которые отсоединены.
Если к группе автоматического масштабирования подключен классический балансировщик нагрузки, экземпляры отменяются из балансировщика нагрузки. Если к группе автоматического масштабирования присоединены целевые группы, экземпляры отменяются из целевых групп.
Так что вместо звонка set-instance-health
, вызов detach-instances
(и при желании заменить его). Затем вы можете отладить экземпляр. Если вы хотите отправить его обратно в сервис, используйте aws autoscaling attach-instances
,