Проблема с Upstream

admin на sysadmins.el.kg admin на sysadmins.el.kg
Ср Фев 15 09:37:13 UTC 2012


Доброго дня! Хотелось бы детально прояснить ситуёвину - у меня имеются 2
бекенда на lighttpd и 1 фронтенд на nginx (1.1.12) который я периодически
пытаюсь
запустить в качестве балансирующего реверса. Вот его конфиг:

user nginx;
worker_processes 16;
worker_priority -15;

error_log  /var/log/nginx/error.log  notice;
pid        /var/run/nginx.pid;

timer_resolution 100ms;
worker_rlimit_nofile 1024;

events {
    worker_connections 512;
    use epoll;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

   limit_conn_zone $binary_remote_addr zone=myzone:10m;
   proxy_cache_path /var/cache/nginx levels=2 keys_zone=pagecache:5m
inactive=10m max_size=50m;
   proxy_cache off;
   client_body_buffer_size     128K;
   client_header_buffer_size   4k;
   client_max_body_size          2048M;
   large_client_header_buffers 16 8k;


   output_buffers   32 64k;
   postpone_output  1460;

   lingering_time     30;
   lingering_timeout  10;
   reset_timedout_connection  on;

   client_header_timeout  90;
   client_body_timeout    90;

   expires               2m;
   keepalive_timeout     60;
   send_timeout          10m;

   ignore_invalid_headers   on;
   keepalive_requests      100;
   limit_conn_zone $binary_remote_addr zone=gulag:5m;
   recursive_error_pages    on;
   sendfile                 on;
   server_name_in_redirect on;
   server_tokens           off;

   tcp_nodelay on;
   tcp_nopush  on;

   gzip               off;
   gzip_buffers       32 64k;
   gzip_comp_level    6;
   gzip_proxied       any;
   gzip_disable       "msie6"
   gzip_http_version  1.0;
   gzip_min_length    4096;
   gzip_types         application/x-javascript text/css text/xml text/plain;
   gzip_vary          off;


    server {
        listen 0.0.0.0:80;
            location / {
                proxy_pass  http://backends;
                proxy_set_header  Host       $host;
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For
$proxy_add_x_forwarded_for;
                }

            location /status {
               stub_status on;
               access_log   off;
               }
}

    upstream  backends  {
    ip_hash;
        server 192.168.50.1:8080 max_fails=3 fail_timeout=30s;
        server 192.168.50.3:8080 down;
    }

}

Как вы можете видеть последний апстрим потушен, в результате чего второй
бэкенд у меня простаивает. Стоит только поключить его как мгновенно
возрастает время отклика бэкендов раза в 2-3. Что не так в моем конфиге?
Или это nginx такой "шустрый"?

P.S. Еще интересно куда делись директивы weight и backup? Стоит их
прописать в конфиге апстримов как nginx начинает ругаться матом говоря что
не знает сих директив, а они мне очень бы пригодились, поскольку в случае
успешного решения сабжевой проблемы планируется ввод еще 2 бэкендов.




Подробная информация о списке рассылки nginx-ru