一、Round-Robin
功能
在加权轮询的方式访问server指令的上游服务,集成在Nginx的upstream框架中
指令
weight
服务访问的权重,默认1
max_conns
server的最大并发连接数,仅作用于单worker进程。默认0,无限制
max_fails
在fail_timeout时间段内,最大的失败次数。当达到最大失败时,会在fail_timeout秒内这台server不允许再次被选择
fail_timeout
单位为秒,默认值为10s。指定一段时间内,最大的失败次数max_fails,到达max_fails后,该server不能访问的时间。
upstream test{
server 127.0.0.1:8081 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
server 127.0.0.1:8082 weight=1;
}
二、ip地址Hash
upstream test{
ip_hash;
server 127.0.0.1:8081 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
server 127.0.0.1:8082 weight=1;
}
三、其他字符串或变量Hash
upstream test{
#取url参数中 username的值 拼接上user_前缀
hash user_$arg_username;
server 127.0.0.1:8081 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
server 127.0.0.1:8082 weight=1;
}
四、一致性Hash算法
解决:宕机或者扩容时,hash算法引发大量路由变更,可能导致缓存大范围失效。
指令最后增加 consistent
upstream test{
#取url参数中 username的值 拼接上user_前缀
hash user_$arg_username consistent;
server 127.0.0.1:8081 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
server 127.0.0.1:8082 weight=1;
}