美文网首页
Nginx实现负载均衡

Nginx实现负载均衡

作者: 0说 | 来源:发表于2022-02-09 09:22 被阅读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;
        }
    

    相关文章

      网友评论

          本文标题:Nginx实现负载均衡

          本文链接:https://www.haomeiwen.com/subject/sucwkrtx.html