基本语法
upstream的基本语法如下,一个upstream需要设置一个名称,这个名称可以在server里面当作proxy主机使用。
upstream node { server 127.0.0.1:9001; server 127.0.0.1:9002; server 127.0.0.1:9003; }
/
location / { proxy_pass http://node; }
1.默认状态是按照轮询的方式去做负载的
使用express 启动三个服务 分别是9001 9002 9003
const express = require('express') var num = 1 const app = express() app.get('/list',(req,res)=>{ res.json({ code:200, message:"Nginx 负载均衡9001" }) console.log("Nginx 负载均衡9001",num) num++ }) //------------------------------9001 app.listen(9001,()=>{ console.log('9001 success') }) //----------------------------------- const express = require('express') var num = 1 const app = express() app.get('/list',(req,res)=>{ res.json({ code:200, message:"Nginx 负载均衡9002" }) console.log("Nginx 负载均衡9002",num) num++ }) //------------------------------9002 app.listen(9002,()=>{ console.log('9002 success') }) //-------------------------------- const express = require('express') var num = 1 const app = express() app.get('/list',(req,res)=>{ res.json({ code:200, message:"Nginx 负载均衡9003" }) console.log("Nginx 负载均衡9003",num) num++ }) //------------------------------9003 app.listen(9003,()=>{ console.log('9003 success') })
经过33次压测之后 平均每个负载为11次证明轮询
2.权重weight
upstream node { server 127.0.0.1:9001 weight=3; server 127.0.0.1:9002 weight=2; server 127.0.0.1:9003 weight=1; }
权重越大服务器承载的并发就越高
压测100 更多的并发打到了9001
3. fail_timeout backup
fail_timeout是故障等待超时时间
backup是备用服务器参数,可以为一个upstream设置一个backup的server,在生产server全部都出问题之后,可以自动切换到备用server上,为回复服务争取时间
upstream node { server 127.0.0.1:9001 fail_timeout=60; server 127.0.0.1:9002 fail_timeout=20; server 127.0.0.1:9003 backup; }