Проверка работоспособности завершилась неудачно с этими кодами: [502]

Я хотел бы упомянуть, что я не опытный технический специалист, но я пытался изучить AWS через онлайн-курс, и я застрял в одном моменте:

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

#/bin/bash
yum update -y
yum install httpd -y
systemctl start httpd
systemctl enable httpd
cd /var/www/html
echo "This is an INSTANCE" > index.html

Затем я создал балансировщик нагрузки приложения с HTTP-прослушивателем (порт 80). ALB был связан с подсетями, которые используют группу безопасности, которая определенно имеет открытый доступ (я использовал ту же группу безопасности для других упражнений с открытым доступом)

Но каждый раз обе целевые группы показывают описание «
Проверка работоспособности не удалась с этими кодами: [502]». Я перепробовал все, что мог придумать, и даже попытался провести небольшое исследование, но не смог понять.

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

У кого-нибудь есть какие-либо идеи?


person Chris Das    schedule 25.04.2020    source источник
comment
А как насчет SG инстансов? Разрешают ли они входящий из группы безопасности ALB?   -  person Marcin    schedule 26.04.2020


Ответы (2)


Заголовок ошибки HTTP 502: Bad gateway.

Я столкнулся с той же ошибкой, и это было связано с тем, что проверки работоспособности были настроены по другому протоколу (HTTP), а не по протоколу целевой группы (HTTPS).

Дополнительные возможные причины упоминаются здесь:

HTTP 502: Bad gateway

Possible causes:

 - The load balancer received a TCP RST from the target when attempting to establish a connection.

 - The load balancer received an unexpected response from the target, such as "ICMP Destination unreachable (Host unreachable)", when attempting to establish a connection. Check whether traffic is allowed from the load balancer subnets to the targets on the target port.

 - The target closed the connection with a TCP RST or a TCP FIN while the load balancer had an outstanding request to the target. Check whether the keep-alive duration of the target is shorter than the idle timeout value of the load balancer.

 - The target response is malformed or contains HTTP headers that are not valid.

 - The load balancer encountered an SSL handshake error or SSL handshake timeout (10 seconds) when connecting to a target.

 - The deregistration delay period elapsed for a request being handled by a target that was deregistered. Increase the delay period so that lengthy operations can complete.

 - The target is a Lambda function and the response body exceeds 1 MB.

 - The target is a Lambda function that did not respond before its configured timeout was reached.

(*) Дополнительный ресурс - Как мне устранять неполадки и устранять ошибки при проверке работоспособности балансировщиков нагрузки приложений?

person RtmY    schedule 29.07.2020
comment
ДА! Спасибо; Не могу поверить, что пропустил это. Мой протокол был HTTP, но протокол моей целевой группы был HTTPS. Обновление моего протокола до HTTP устранило проблему. БЛАГОДАРЮ ВАС! - person paulmiller3000; 25.08.2020

Ваши сценарии никогда не запускались, потому что пользовательские данные должны начинаться с #!, а ваш сценарий начинается только с #.

Если #! нет, то он не будет выполняться как скрипт.

При отладке ситуации с балансировщиком нагрузки рекомендуется следующий процесс:

  • Попробуйте обратиться к экземплярам напрямую, чтобы убедиться, что они отвечают как веб-серверы. Если нет, войдите в экземпляр и проверьте /var/log/cloud-init-output.log, чтобы увидеть, не вызывали ли данные пользователя какие-либо ошибки.
  • Check the Security Groups to confirm that they are configured correctly, which is typically:
    • A Security Group on the Load Balancer (ELB-SG) that permits inbound web traffic from the Internet
    • Группа безопасности в инстансах Amazon EC2 (App-SG), которая разрешает входящий веб-трафик от ELB-SG. То есть App-SG конкретно ссылается на ELB-SG.

Также обратите внимание, что systemctl правильно работает в Amazon Linux 2, но не в «Amazon Linux» (v1).

person John Rotenstein    schedule 26.04.2020
comment
Большое спасибо, Джон! Это сработало! Трудно поверить, что сингл! сделал такую ​​разницу. Спасибо за советы. Как я уже сказал, я не программист и ценю ваш добрый и терпеливый ответ. - person Chris Das; 27.04.2020