Стратегия балансировки нагрузки Nginx - трафик всегда на один и тот же сервер - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть 2 разных восходящих потока для разных континентов (Америка и Европа)

Я хочу, чтобы каждый отправлял трафик всегда на один и тот же сервер, однако мне нужно указать 2 сервера на каждом в случае простоя - Трафикследует отправить на альтернативный сервер.

Проблема в том, что для этого нет стратегии.Я сделал обход веса = 1000000000 на предпочитаемом сервере, но я чувствую, что это не правильный путь.

upstream US_UPSTREAM  {
    ip_hash;
    server 2.2.2.2 weight=100000000 max_fails=10  fail_timeout=3600s;
    server 1.1.1.1 #should only be used as backup, not round robin or any other strategy
}

upstream EU_UPSTREAM {
    ip_hash;
    server 1.1.1.1 weight=100000000 max_fails=10  fail_timeout=3600s;
    server 2.2.2.2 #should only be used as backup, not round robin or any other strategy
}

1 Ответ

0 голосов
/ 09 февраля 2019

ОК, наконец, обнаружил, как это исправить.

Только резервная копия не работала.Если бы первый сервер был в автономном режиме, я бы получил 502 от него.Ключом к его работе было добавление резервной копии на втором сервере, а также установка ошибки в расположении:

location / {
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forward-Proto http;
      proxy_set_header X-Nginx-Proxy true;


      proxy_pass http://$preferred_upstream$request_uri;
      *proxy_next_upstream error http_502;*
}

upstream

upstream eu_upstream {
    ip_hash;
    server 1.1.1.1 max_fails=5 fail_timeout=3600s;
    server 2.2.2.2 *backup*;
}
...