准备工作
通过node express 启2个服务
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.get('/login', (req, res) => {
console.log('监听中3100login')
res.status(200).json({msg: '请求成功'})
})
app.get('/getList', (req, res) => {
console.log('getList')
res.status(200).json({msg: 'getList'})
})
app.listen('3100', () => {
console.log('监听中3100')
})
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.get('/login', (req, res) => {
console.log('监听中3000login')
res.status(200).json({msg: '请求成功'})
})
app.get('/getList', (req, res) => {
console.log('getList')
res.status(200).json({msg: 'getList'})
})
app.listen('3000', () => {
console.log('监听中2')
})
nginx配置
upstream app1 {
server 192.168.22.36:3000;
server 192.168.22.36:3100;
}
server {
listen 3600;
server_name test.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /api/{
proxy_pass http://app1/;
proxy_redirect default;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Nginx负载均衡的集中方式介绍
1、轮询
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训3000服务和3100服务
upstream app1 {
server 192.168.22.36:3000;
server 192.168.22.36:3100;
}
2、权重
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后3000服务的访问比率会是3100服务的二倍。
upstream app1 {
server 192.168.22.36:3000 weight=1;
server 192.168.22.36:3100 weight=2;
}
3、iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream app1 {
iphash
server 192.168.22.36:3000 weight=1;
server 192.168.22.36:3100 weight=2;
}
4、最少连接
将请求分配到连接数最少的服务上
upstream app1 {
least_conn;
server 192.168.22.36:3000;
server 192.168.22.36:3100;
}
5、fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream app1 {
server 192.168.22.36:3000 weight=1;
server 192.168.22.36:3100 weight=2;
fair;
}
网友评论