0

Я работаю над надежностью экземпляров EC2, использующих некоторый код Python для приема TCP-соединений.AWS Load Balancer Проверка работоспособности

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

Проблема: Если я имитировать тупиковую ситуацию в процессе обработки с бесконечным циклом, то пинги приняты, но сервер Python никогда не закрывает клиент; он остается в цикле. Странная вещь, хотя машина не может принимать больше соединений, экземпляр помечен как здоровый. Я ожидал бы, что машина будет нездоровой, поскольку никакие пингеры не могут быть приняты ею.

Мне интересно, действительно ли тот факт, что экземпляр уже принял пинги, а соединения по-прежнему открыты, означает «здоровую» машину? Или если здесь что-то еще ужасное? И, надеюсь, как это исправить!

Заранее спасибо.

ответ

1

Нет, он должен оставаться здоровым, если сервер возвращает HTTP 200 в запрос. Он также будет использовать HTTP 1.1, сохраняя открытое соединение с сервером, вместо того чтобы отбрасывать и воссоздавать его. Оставшееся здоровое указывает, что ELB получает 200 ответов на попытки ping с вашего сервера.

Вы уверены, что скрипт python участвует в ответе на пинг? Что такое запрос ping? Я рекомендую, чтобы проверка работоспособности проверила URL-адрес, который ваше приложение активно обрабатывает аналогично производственным запросам.

Устранение неполадок документы здесь:

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-healthcheck.html

+0

Питон скрипт принимает соединение от пингов и обычно снова закрыть соединение, как только он понимает, что это на самом деле пинг. Но в симуляции взаимоблокировки он принимает пинг, и все. Он не принимает никаких дополнительных соединений от балансировщика нагрузки, поэтому я не уверен, почему машина считается здоровой. – FintanH

+0

ELB поддерживает соединение и отправляет последующие запросы по этому существующему соединению, сценарий должен отвечать HTTP 200 на проверку здоровья ELB. Вы можете проверить это вручную, подключившись к вашему серверу в тех же условиях, используя инструмент «nc» (в unix/linux) и выполнив запросы GET, которые посылает проверка работоспособности ELB. – ColinSeligSmith

+0

Но я не понимаю, что если скрипт ничего не делает (буквально «while True: continue»), то почему первоначальные запросы не синхронизируются? – FintanH