本文所指的upstream是Nginx的http模块中的内容,Nginx在1.9版本后加入了stream模块,使Nginx可实现四层协议的转发、代理或者负载均衡等功能,其中也有upstream模块。与stream不同的是http模块工作在七层。
对Nginx来说,upstream可以在nginx上将后端服务器定义为服务器组,将不同后端不同的服务器划分为不同的组,再经过不同组内的调度算法实现负载均衡。和缓存设置类似,upstream需要先在http下定义,再被调用,方可正常使用。
示例:
http {
……
upstream webserver { #定义名为webserver的组
server 192.168.1.111:80;
server 192.168.1.222:80; #将后端两台主机定义到webserver组内
}
以上其实就已经将一个 upstream组定义完成了,定能实现组调度功能了,但是还比较粗糙,在其中还能更精细化的定义其他功能参数:weight=number; #定义组内各主机的权重
max_conns=number; #定义最大连接数
max_fails=number; #定义健康状态监测,检测最大number数若依然失败,则判断为服务器不可用了。
fail_timeout=time; #定义健康状态检测,检测失败的超时时长,若在设定时间内依然谅解失败,则判断服务器不可用了
backup; #设定当所有组内server都不可用时,将所有请求跳转至backup标记的server。
down; #手动将serverdown掉,例行维护是会使用到。
ip_hash #基于源IP进行hash算法调度,算法较粗糙,会与back_up冲突
转载于:https://blog.51cto.com/13322786/2161866