nginx调度算法

1. 轮询-roundrobin

  • 一个轮一个的
  • 缺点:有的服务器性能好,有的性能差,性能差的机器接受的请求多了肯定不乐意
upstream servers {
        server 172.28.28.19:80 ;
        server 172.28.28.20:80 ;   
}
#权重weight默认是1

2.加权轮询weight-roundrobin

  • 也是一个一个轮询的,只不过是比例不一样了,比如2:1、3:2之类的
  • weight后的数字不是数值,是比重
upstream servers {
        server 172.28.28.19:80 weight=2 max_fails=2 fail_timeout=30;
        server 172.28.28.20:80 weight=1 max_fails=1 fail_timeout=20;
}

#max_fails 表示的是proxy最多检查几次(针对坏掉的机器)
#fail_timeout  表示的是proxy在每次检查后,间隔多长事件后再去检查

3.源地址ip_hash检测

  • 背景:用户请求登录扣扣,服务器1返回登录界面,用户登录;用户再次请求登录扣扣,服务器2返回登录界面,用户登录
  • 实现:用过ip_hash检测,如果是同一个客户端登录,proxy会把请求始终转发到同一服务器上
  • 相同客户端访问相同的服务器,ip_hash是根据ip地址的前几位进行检测的
upstream servers {
        ip_hash; #此算法是针对整个集群的
        server 172.28.28.19:80 weight=2;
        server 172.28.28.20:80 max_fails=1 fail_timeout=20;
        #server 172.28.28.20:80 down;
    }

#down:服务器出现重大故障,已没必要修复,添加down,把该服务器剔除
上一篇:最低成本联通所有城市(Kruskal)


下一篇:Wooden Sticks