@null_object

Как работает round robin в Nginx?

Запускаю 4 реплики приложения в докере + контейнер с nginx. Конфиг такой:
server {
    listen 80;

    resolver 127.0.0.11 ipv6=off valid=10s;

    # . files
    location ~ /\.(?!well-known) {
        deny all;
    }

    location / {
        proxy_pass                         http://app:3000$request_uri;
        proxy_set_header Host              $host;
        proxy_http_version                 1.1;

        # proxy headers
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;

        # proxy timeouts
        proxy_connect_timeout              60s;
        proxy_send_timeout                 60s;
        proxy_read_timeout                 60s;
    }
}

Вопросов на самом деле несколько:
1) Как разрешается http:// app в несколько ip-адресов?
2) Nginx сам делает несколько upstream при такой конфигурации?
3) Почему round robin не равномерно распределяет трафик, вопрос именно в точности, хотел это использовать не по назначению, а он распределяет между 4 контейнерами где-то 35% 35% 20% 10% и как это поправить?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
  1. Через резолв docker dns
  2. Nginx сам ничего не сделает
  3. Потому что предыдущие пункты. Правится созданием upstream, он уже разобьёт server на несколько ip из ответа DNS
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы