Есть MVC приложение, в котором указан ServiceReference на сервисы.
В коде на С# есть обращения к этим сервисам. Сервисы установлены на двух серверах. Требуется балансировать нагрузку на сервисы по этим серверам.
Для балансировки использую nginx с модулем nginx-sticky-module. Он, как известно, привязывает запрос по куки route. Но в этом случае я так понимаю не работает эта привязка, наверное нужные куки не создаются. До того как что-то отобразиться в браузере происходит 3 запроса к сервису.
Судя по логам, сначала к одному серверу, потом в к другому. Хотя при привязке по куки route они должны уходить на один сервер. Вопрос. Почему привязка по куки не работают?
Мой конфиг:
#user nobody;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
worker_processes 1;
worker_rlimit_nofile 20240;
events {
worker_connections 20240;
}
http {
log_format upstream 'Request: "$request" [$time_local] BI_SERVER_IP: $upstream_addr STATUS: $status' $upstream_cache_status - $upstream_status - $upstream_response_time - $upstream_http_host - $upstream_http_content_type - $upstream_http_content_length - $upstream_http_location;
#sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
#gzip on;
upstream backend {
sticky;
server 10.0.7.99;
server 10.0.6.140;
}
server {
listen 555;
server_name localhost;
access_log logs/nginx_upstream_access.log upstream;
location /MyService{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:555;
proxy_connect_timeout 10m;
proxy_send_timeout 10m;
proxy_read_timeout 8m;
proxy_next_upstream off;
proxy_pass http://backend/MyService;
}
}
}
#$upstream_http_host
Nginx и веб-приложение на одной и той же машине. ОС Windows.