AWS - балансировщик нагрузки целевой группы - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть балансировщик нагрузки и Nginx, который находится позади LB.

Ниже приведена конфигурация nginx.

upstream app {
    server service_discovery_name.local:5005;
}

server {   // Reverse proxy for VPC ES to be available on public

    listen 80;

    location / {
        proxy_pass vpc-es-domain-url;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {  // reverse proxy for django app

    listen 8005;

    location / {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

У меня есть слушатель, подключенный к ALB, прослушивающий порт 80, который перенаправляет трафик c на целевой IP. Целевая группа имеет частный IP-адрес контейнера Nginx. Я использую контейнер Fargate-ECS.

Теперь, когда я направляюсь в ALB_url:80, он открывает эластичный поиск. Однако, когда я направляюсь на ALB_url:8005, ничего не загружается. Django_app работает на порту 5005, проверьте, явно перейдя к IP =: 5005.

Я считаю, что конфигурация nginx верна. Я хочу, чтобы мой трафик c был направлен через ALB -> Nginx -> apps. Что именно мне не хватает?

1 Ответ

0 голосов
/ 13 апреля 2020

Когда вы настраиваете ALB, вы должны создать прослушиватель, указать порт и действие (переслать запрос в Target Group или сделать перенаправления), вы можете создать несколько прослушивателей, используя разные порты, например, вы можете иметь прослушиватель прослушивание через порт 80 и перенаправление на HTTP и другой прослушиватель с портом 443, пересылающий запрос в целевую группу.

В соответствии с этим я понимаю, что ваша конфигурация: - ALB прослушивает порт 80 и отправляет запрос на Целевая группа. - Целевая группа прослушивает порт 80 и отправляет запрос в задачу Fargate (nginx сервер)

При маршрутизации на ALB_URL: 80 запрос перенаправляется в целевую группу через порт 80, а запрос отправляется в Fargate. задача. Но при маршрутизации к ALB_URL: 8005 это не будет работать, потому что у ALB нет прослушивателя для этого порта.

Вы можете создать прослушиватель с портом 8005, который перенаправляет запрос в целевую группу, прослушивающую в 8005. с этой конфигурацией при маршрутизации ALB_url: 8005 запрос будет отправлен созданной TG, а затем будет отправлен в задачу Fargate и перенесет конфигурацию в конфигурацию Nginx.

ALB ---> слушатель 80 ----> Порт целевой группы 80 ----> Задача ECS Nginx

ALB ---> слушатель 8005 ---> Порт целевой группы 8005 ----> Задача ECS Nginx

Не забудьте проверить группы безопасности, чтобы разрешить порт 8005

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target -group-routing-configuration

...