准备条件
2个服务
app.js
const app = require('express')()
app.get('/',(req, res)=>{
res.send('http://1270.0.0.1:4000')
})
app.listen(4000,()=>console.log('http://1270.0.0.1:4000启动'))
app2.js
const app = require('express')()
app.get('/',(req, res)=>{
res.send('http://1270.0.0.1:3000')
})
app.listen(3000,()=>console.log('http://1270.0.0.1:3000启动'))
启动2个服务 node app.js
node app2.js
nginx配置
http {
// ....
upstream myserver {
// ip_hash; //
server 127.0.0.1:3000 weight=1;
server 127.0.0.1:4000 weight=1;
}
server {
location /{
proxy_pass http://myserver;
proxy_connect_timeout 10;
}
// ....
}
}
浏览器访问 http://localhost:8090/
负载均衡 分配策越
1. 轮询(默认)
每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
upstream myserver {
server 127.0.0.1:3000;
server 127.0.0.1:4000;
}
2. weight 权重
权重,默认为 1,权重越高分配的请求越多
upstream myserver {
server 127.0.0.1:3000 weight=1;
server 127.0.0.1:4000 weight=2;
}
3. ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题
upstream myserver {
ip_hash;
server 127.0.0.1:3000;
server 127.0.0.1:4000;
}
4. fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream myserver {
server 127.0.0.1:3000;
server 127.0.0.1:4000;
fair;
}