Как сделать, чтобы экземпляр EC2 автоматически перезагружался, когда ELB сообщает, что он недоступен? - PullRequest
6 голосов
/ 06 марта 2012

Время от времени Elastic Load Balancer (ELB) отключает один из моих серверов за недоступность.Что хорошо - вряд ли перерыв

Обычно простая перезагрузка экземпляра через Консоль AWS решает проблему.

Я бы хотел, чтобы мой экземпляр EC2 автоматически перезагружался, когда он становился недоступным.

Какой лучший способ сделать это?(это экземпляр Windows, но в идеале это не должно иметь значения)

Ответы [ 5 ]

5 голосов
/ 25 марта 2012

Я получил дешевый микроэкземпляр EC2 и написал простой скрипт, который перечисляет все мои серверы в EC2, и выполняет GET на каждом из них, чтобы убедиться, что он работает нормально.Если сервер не работает должным образом, мой скрипт перезагружает его.У меня скрипт запускается раз в 10 минут.

Было бы немного проще, если бы существовал сервис, который бы сделал это для меня, но система была проста в настройке, а микроэкземпляр дешев.

5 голосов
/ 22 июля 2014

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

4 голосов
/ 24 июля 2016

Согласитесь с @agmin, что лямбда-функция - отличный способ сделать это.Вы можете настроить тревогу CloudWatch для запуска лямбда-функции через тему SNS.

Я собрал эту реализацию вместе, и, похоже, она работает хорошо.Его можно настроить и настроить полностью через командную строку:

https://github.com/jcowley/elb-instance-reboot

3 голосов
/ 31 марта 2016

Написать лямбда-функцию!

Это дешевле, чем запускать микроэкземпляр, и вы можете настроить его на любой интервал времени. Вы также получаете мониторинг CloudWatch с ним, поэтому вам не нужно беспокоиться о проверке работоспособности вашего микро экземпляра отдельно.

Я использую ElasticBeanstalk, который предлагает конечную точку describeInstancesHealth. В качестве альтернативы вы можете использовать конечную точку describeInstanceStatus в ec2.

Тогда, если вы обнаружите плохой экземпляр, у ec2 rebootInstances вы сможете перезагрузить один или несколько экземпляров.

3 голосов
/ 06 марта 2012

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

Поскольку вы используете экземпляр Windows, вы можете написать сценарий powershell для настройки вашего сервера и использовать CloudInit.NET для выполнения сценария при запуске сервера.Последняя часть скрипта должна включить проверку балансировщика нагрузки.

...