Nginx核心要领十二:Nginx负载均衡策略

x33g5p2x  于2021-12-20 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(326)

Nginx有多种负载均衡策略,以下将列出6种:

策略说明
轮询默认方式
ip_hash依据客户端 IP 转发方式
weight权重方式
least_conn最少连接方式
sticky(第三方)根据分配给客户端的cookie
fair(第三方)响应时间方式

直接列出每种策略的配置

公用配置

#使用下面列出的策略
upstream zy {
  .....
}
server {
    server_name zy.csxiuneng.com;
    location / {
      proxy_pass http://zy;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      client_max_body_size 10m;
      client_body_buffer_size 256k;
      proxy_connect_timeout 90;
      proxy_send_timeout 90;
      proxy_buffer_size 4k;
      proxy_buffers 4 32k;
      proxy_busy_buffers_size 64k;
      proxy_temp_file_write_size 64k;
	}
}
1.轮询

在轮询中,如果服务器down掉了,会自动剔除该服务器

#默认轮询方式
upstream zy {
   server 127.0.0.1:8011;
   server 127.0.0.1:8012;
}
2.ip_hash

基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,但是无法区分处于同一个局域网内的多个客户端

#ip_hash算法,使用$remote_addr变量值,也就是客户端IP做hash算法
upstream zy {
  ip_hash; 
  server 127.0.0.1:8011;
  server 127.0.0.1:8012;
}
3.weight

weight参数用于指定轮询几率,weight的默认值为1,;weight的数值越大分配的请求越多

#轮询权重,更多请求分配到8011端口
upstream zy {
  server 127.0.0.1:8011 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
  server 127.0.0.1:8012;
}
4.least_conn

把请求转发给连接数较少的后端服务器

#将请求分配到最少连接的服务器
upstream zy {
  least_conn; 
  server 127.0.0.1:8011;
  server 127.0.0.1:8012;
}
5.sticky

sticky是第三方模块,nginx-sticky-module,安装可参考:https://blog.csdn.net/zhuyu19911016520/article/details/91351773
此模块根据服务器给客户端的cookie,客户端再次请求时会带上此cookie,nginx会把有此cookie的请求转发到颁发cookie的服务器上,解决 ip_hash 中局域网内用户负载不均的问题

upstream zy {
    #使用sticky,1小时过期
    sticky expires=1h domain=zy.csxiuneng.com path=/;
    server 127.0.0.1:8011;
	server 127.0.0.1:8012;
}

相关文章