Nginx几种Upstream的配置方式

相比Apache,使用Nginx的一个很大的好处是可以做简单的负载均衡,下面是upstream的几种配置。

1:轮询,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream test{
   server 192.168.0.1:3000;
   server 192.168.0.1:3001;
}

2:权重,可分配后端服务器的权重,适用于后端服务器性能不均衡的情况。

upstream test{
   server 192.168.0.1 weight=2;
   server 192.168.0.2 weight=3;
}

3:ip_hash,按照客户端IP的hash结果来分配请求,适用于需要保留session的情况。

upstream test{
   ip_hash;
   server 192.168.0.1;
   server 192.168.0.2;
}

4:fair,需要安装Upstream Fair Balancer Module,按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream test{
   server 192.168.0.1;
   server 192.168.0.2;
   fair;
}

5:自定义hash,需要安装Upstream Hash Module,可以根据给定的字符串进行Hash分配,没太明白。

upstream test{
   server 192.168.0.1;
   server 192.168.0.2;
   hash $request_uri;
}

具体应用:

upstream domain1_server_pool {
	ip_hash;
    server 192.168.0.1:7001;
    server 192.168.0.2:7001;
}

server {

        listen       80;
        server_name  back.abc.com;
        root         /usr/local/nginx/html;

        location ^~/csbackend {
            proxy_pass               http://domain1_server_pool;
            proxy_redirect           off;
            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         access_token    $http_access_token;
            proxy_set_header         client_id       $http_client_id;
            proxy_set_header         client_secret   $http_client_secret;
            proxy_set_header         m_client_type   $http_m_client_type;
            proxy_set_header         m_os_version    $http_m_os_version;
            proxy_set_header         m_hd_type       $http_m_hd_type;
            proxy_set_header         m_serial        $http_m_serial;
            client_max_body_size     10m;
            client_body_buffer_size  256k;
            proxy_connect_timeout    300;
            proxy_send_timeout       300;
            proxy_read_timeout       300;
            proxy_buffer_size 64k;
            proxy_buffers   32 32k;
            proxy_busy_buffers_size 128k;
        }
        
        access_log logs/back.abc.com.log main;
}

 

upstream每个后端的可设置参数:

1.down: 表示此台server暂时不参与负载。

2.weight: 默认为1,weight越大,负载的权重就越大。

3.max_fails: 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误。

4.fail_timeout: max_fails次失败后,暂停的时间。

5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器,应急措施。

发表评论

电子邮件地址不会被公开。 必填项已用*标注