Nginx实现负载均衡

2022-02-09  本文已影响0人  0说

准备工作

通过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;
    }
上一篇 下一篇

猜你喜欢

热点阅读