с ELB, подключенным к ec2, проверка работоспособности завершилась неудачно при HTTP-пинге, но прошла успешно при TCP-пинге - PullRequest
0 голосов
/ 03 апреля 2019

Я создавал бэкэнд для простого приложения.Это было с nginx-uwsgi-djangorest-api в AWS EC2.Поскольку мне нужно было отправлять запросы с помощью https, я добавил балансировщик нагрузки elb в мой экземпляр ec2, который пересылает HTTPS в HTTP.ELB должен был проверить модель на здоровье.Сначала у меня был пинг «80: HTTP / health» для проверки работоспособности, и я смог увидеть результат в / health

, но при проверке работоспособности всегда происходил сбой, при этом "GET /health/ HTTP/1.1" 400 37 "-" "ELB-HealthChecker/1.0" показывалось на nginx и uwsgilog.

группа безопасности для экземпляра ec2

тип - протокол - диапазон портов - источник

HTTP - TCP - 80 - 0.0.0.0/0

HTTP - TCP - 80 - :: / 0

SSH - TCP - 22 - 0.0.0.0/0

группа безопасности для балансировщика нагрузки

HTTP - TCP - 80 -0.0.0.0/0

HTTPS - TCP - 443 - 0.0.0.0/0

файл конфигурации для nginx

upstream django {
    server unix:///tmp/mysocket.sock; # for a file socket
}

server {
    listen 80;
    server_name *.compute.amazonaws.com *.elb.amazonaws.com;
    charset utf-8;
    client_max_body_size 128M;
    location / {
        uwsgi_pass  django;
        include     uwsgi_params;
    }
}

Я не смог получить то, что было неправильно длячасов и когда я изменил ping-порт проверки состояния и протокол на HTTP: 80 / health на 80: TCP , он вдруг начал работать ...

Может кто-нибудь объяснитьдля меня, что делает эта проверка здоровья?Я не могу понять разницу между 80: TCP Healthchecker и HTTP Healthchecker.у этого нет / Health / URL, который должен был достичь.

У меня также были сертификаты SSL.

  • по http-пинг, даже когда я добавил это вФайл конфигурации сервера nginx, проверка работоспособности была возвращена в ответе 400.
location /health {
    return      200;
}

1 Ответ

0 голосов
/ 03 апреля 2019

Проверка работоспособности TCP будет просто проверять возможность установления TCP-соединения, тогда как проверка работоспособности HTTP будет проверять определенный код состояния HTTP в ответе.URL проверки вашего здоровья не возвращает 200 ответ?

...