Добрый день, у меня вопрос по настройки балансировки на nginx. Мне нужно было сделать балансировщик на nginx, который распределяет нагрузку между бекэндами (nginx + rails). Столкнулся с проблемой, что при отключении одного из бекэндов nginx не перераспределяет нагрузку, т.е. нагрузка на оставшихся бекэндах остается та же, а RPS на балансировщике падает. Балансировщик пытается каждый раз слать запросы на упавший сервер. Никак не могу понять в чем проблема.
Вот конфиг балансировщика:
upstream backend {
server 10.132.0.2 max_fails=1 fail_timeout=30s;
server 10.142.0.4 max_fails=1 fail_timeout=30s;
server 10.142.0.5 max_fails=1 fail_timeout=30s;
server 10.142.0.6 max_fails=1 fail_timeout=30s;
}
server {
listen 80;
server_name 0.0.0.0;
root /app/public;
allow all;
location /nginx_status {
stub_status;
}
location /assets/ {
error_page 404 = @store;
expires max;
}
location @store {
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header Host $http_host;
}
location / {
proxy_pass http://backend;
proxy_next_upstream error timeout invalid_header http_502;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
}
}
График RPS на балансировщике (синий) и бекэндах (красный), отключается желтый бекэнд (на нем RPS сразу падает до 0, на графике ошибка).