nginx--负载均衡


nginx的负载均衡策略可以划分为两大类:内置策略和扩展策略。内置策略包含加权轮询和ip hash,在默认情况下这两种策略会编译进nginx内核,只需在
nginx配置中指明参数即可。扩展策略有很多,如fair、通用hash、consistent hash等,默认不编译进nginx内核,是第三方模块。
nginx 的 upstream目前支持 4 种方式的分配 :
1)轮询(默认)
      每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)weight
      指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)ip_hash
      每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  
3)fair(第三方)
      按后端服务器的响应时间来分配请求,响应时间短的优先分配。  
4)url_hash(第三方)
Nginx默认采用round_robin加权算法。如果要选择其他的负载均衡算法,必须在upstream的配置上下文中通过配置指令明确指定,
比如采用Ip_hash的upstream配置如下所示:
    upstream load_balance{  
        ip_hash;  
        server localhost:8001;  
        server localhost:8002;  

    } 


配置

语法:upstream name {...}
default:-
所属指令:http
定义一组用于实现nginx负载均衡的服务器,它们可以侦听在不同的端口。另外,可以混合使用侦听TCP与UNIX-domain套接字文件。
默认情况下,请求被分散在使用加权轮询的nginx负载均衡服务器上。在上面的例子中,每七个请求按下面分配:五个请求发送给backend1.example.com,127.0.0.1:8080和unix:/tmp/backend3各自分配一个。如果在于服务器通信时发生了一个错误,这个请求会被传递给
下一个服务器,以此类推至道所有的功能服务器都尝试过。如果不能从所有的这些nginx负载均衡服务器上获得回应,客户端将会获得最后一个链接的服务器的处理结果。
语法:server 地址 [参数];
default:-
所属指令:upstream
 
设置一个nginx负载均衡服务器的地址和其他参数。一个地址可以被指定为域名或IP地址,和一个可选的端口,或者被定为UNIX-domain套接字文件的路径,使用"unix:"作为前缀。如果端口没指定,则使用80端口。一个被解析到多个IP地址的域名本质上指定了多个服务器。
可以定义下面的参数:
weight=number
  设置服务器的权限,默认是1
max_fails=number
  设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求
  都失败了,那么认为该服务器会被认为是停机了,停机时间是fail_timeout设置的时间。默认情况下,
  不成功连接数被设置为1。被设置为零则表示不进行链接数统计。那些连接被认为是不成功的可以通过
  proxy_next_upstream, fastcgi_next_upstream,和memcached_next_upstream指令配置。http_404
  状态不会被认为是不成功的尝试。
fail_time=time
  设置
    多长时间内失败次数达到最大失败次数会被认为服务器停机了
    服务器会被认为停机的时间长度
  默认情况下,超时时间被设置为10S
 
backup
  标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
 
down   标记服务器永久停机了;与指令ip_hash一起使用。 例子:     upstream backend {           server backend1.example.com     weight=5;           server 127.0.0.1:8080           max_fails=3 fail_timeout=30s;           server unix:/tmp/backend3;                   server backup1.example.com:8080 backup;       }  

相关文章
相关标签/搜索