Почему Elastic Load Balancing сообщает «Не работает»? - PullRequest
39 голосов
/ 18 августа 2011

Я пытаюсь настроить Упругая балансировка нагрузки (ELB) в AWS, чтобы разделить запросы между несколькими экземплярами. Я создал несколько изображений своего веб-сервера на основе одного и того же AMI, и я могу войти в каждый из них по отдельности и получить доступ к сайту через каждый отдельный общедоступный DNS.

Я добавил каждый из своих экземпляров в балансировщик нагрузки, но все они возвращаются с Status: Out of Service, потому что они не прошли проверку работоспособности. Я в основном запутался, потому что я могу получить доступ к каждому экземпляру из его общедоступного DNS, но я получаю тайм-аут всякий раз, когда посещаю DNS-имя балансировщика нагрузки.

Я пытался прочитать все документы и погуглить, но я застрял. Будем весьма благодарны за любые указатели или ссылки в правильном направлении.

Ответы [ 11 ]

20 голосов
/ 16 апреля 2013

Я связался со службой поддержки AWS по поводу этой же проблемы.Очевидно, их система не знает, как обрабатывать случаи, когда все экземпляры, стоящие за ELB, останавливаются на длительное время.Служба поддержки AWS может обновить статусы вручную, если они вам понадобятся немедленно.

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

16 голосов
/ 26 августа 2011

Проверка работоспособности (по умолчанию) выполняется путем доступа к index.html для каждого экземпляра, включенного в балансировщик нагрузки. Если у вас нет index.html в корневом каталоге документа, проверка работоспособности по умолчанию завершится неудачно. Вы можете установить собственный протокол, порт и путь для проверки работоспособности при создании эластичного балансировщика нагрузки.

9 голосов
/ 09 декабря 2013

Наконец-то я заработал. Проблема была с Amazon Security Groups , потому что я ограничил доступ к порту 80 несколькими машинами в моей области разработки, и балансировщик нагрузки не смог получить доступ к серверу apache на экземпляре. Как только балансировщик нагрузки получил доступ к моему экземпляру, он получает In Service .

Я проверил это с помощью tail -f /var/log/apache2/access.log в моем случае, чтобы проверить, пытался ли балансировщик нагрузки получить доступ к моему серверу, и увидеть ответ, который сервер дает балансировщику нагрузки.

Надеюсь, это поможет.

2 голосов
/ 07 августа 2017

Если ваш веб-сервер работает нормально, то это означает, что проверка работоспособности выполняется по URL, который не возвращает 200.

Уловка, которая работает для меня: перейдите к экземпляру, введите curl localhost: 80 / pathofyourhealthcheckurl

После того, как вы сможете адаптировать свой URL проверки здоровья, вы всегда получите ответ 200.

1 голос
/ 18 января 2016

Я столкнулся с той же проблемой, я изменил протокол Ping с https на ssl .. это сработало!

Go to Health Check  --> click on Edit Health Check -- > change Ping protocol from HTTPS to SSL
Ping Target SSL:443
Timeout 5 seconds
Interval    30 seconds
Unhealthy Threshold 5
Healthy Threshold   10
1 голос
/ 28 июля 2015

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

0 голосов
/ 26 сентября 2018

Я получил ту же ошибку, в моем случае пришлось скопировать определенный HTML-файл из корзины s3 в папку "/ var / www / html". Тот же HTML-код, указанный в пути балансировки нагрузки.

Проблема устранена после копирования html-файла.

0 голосов
/ 04 марта 2018

У меня была похожая проблема. Похоже, проблема была вызвана тем, что я использовал проверку работоспособности HTTP, а также .htaccess для защиты паролем сайта.

0 голосов
/ 14 ноября 2015

Добавление этого, потому что я потратил часы, пытаясь выяснить это ...

Если вы настроили конечную точку проверки работоспособности, но она по-прежнему говорит Out of Service, возможно, ваш сервер перенаправляет запрос(т.е. возвращает ответ 301 или 302).

Например, если предполагается, что ваша конечная точка равна /app/health/, но вы вводите только /app/health (без завершающего слеша) в конечную точку проверки работоспособностиполе на вашем ELB, вы не получите 200 ответа, поэтому проверка работоспособности не удастся.

0 голосов
/ 08 августа 2015

Я работал над учебником AWS по размещению веб-приложения и столкнулся с этой проблемой. Шаг 7b гласит следующее:

"Установить путь Ping в /. Это отправляет запросы на страницу по умолчанию, называется ли она index.html или что-то еще."

Они могли поставить косую черту в кавычках, подобных этой "/".Удостоверьтесь, что это есть в ваших проверках здоровья, а не в этом "/"..

...