nginx负载均衡

nginx负载均衡

一、以下是Nginx作为七层负载均衡常用的几种调度算法和适用的业务场景

负载均衡其意思就是分摊到多个操作单元上进行执行
nginx本身支持4种:轮询(round robin), 加权轮询(weight round robin), ip_hash, 最小连接(least_conn)
第三方模块,支持2种:最快响应时间(fair), url_hash

1、轮询(round robin)(默认调度算法)

特点:每个请求按时间顺序逐一分配到不同的后端服务器处理。 适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时使用。

upstream bertram.com {
    server 192.168.0.14:8080 max_fails=2 fail_timeout=10s;
    server 192.168.0.15:8080 max_fails=2 fail_timeout=10s;
}

2、加权轮询(weight round robin)

特点:指定轮询几率,weight值(权重)和访问比例成正比,用户请求按权重比例分配。
适用业务场景:用于后端服务器硬件性处理能力不平均的情形。

upstream bertram.com {
    server 192.168.0.14:8080 weight=5 max_fails=2 fail_timeout=10s;
    server 192.168.0.15:8080 weight=10 max_fails=2 fail_timeout=10s;
}

3、ip_hash

特点:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session会话保持问题。
适用业务场景:适用于需要账号登录的系统,会话连接保持的业务。

upstream bertram.com {
    ip_hash;
    server 192.168.0.14:8080 max_fails=2 fail_timeout=10s;
    server 192.168.0.15:8080 max_fails=2 fail_timeout=10s;
}

4、最少连接数 (least_conn)

特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。 适用业务场景:适用于客户端与后端服务器需要保持长连接的业务。

upstream bertram.com {
    least_conn;
    server 192.168.0.14:8080 max_fails=2 fail_timeout=10s;
    server 192.168.0.15:8080 max_fails=2 fail_timeout=10s;
}

5、fair(需编译安装第三方模块 ngx_http_upstream_fair_module)

特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配。 适用业务场景:对访问响应速度有一定要求的业务。

upstream bertram.com {
    fair;
    server 192.168.0.14:8080 max_fails=2 fail_timeout=10s;
    server 192.168.0.15:8080 max_fails=2 fail_timeout=10s;
}

6、url_hash(需编译安装第三方模块 ngx_http_upstream_hash_module)

特点:按访问url的hash结果来分配请求,使同一个url访问到同一个后端服务器。 适用业务场景:适用于后端服务器为缓存服务器时比较有效。

upstream bertram.com {
    server 192.168.0.14:8080 max_fails=2 fail_timeout=10s;
    server 192.168.0.15:8080 max_fails=2 fail_timeout=10s;
    hash $request_uri;
}

二、Nginx负载均衡

1、Nginx后端负载均衡

#这一块 负载均衡  需要我们自己添加,可以写多个后端服务 server localhost:8080;
upstream ruoyi_admin_server_group {
    #ip_hash;
    server localhost:8080;
    server localhost:8090;
}
server {
    #server模块, 监听的端口  localhost:80 访问
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #所有的请求都会进入location中,支持正则表达式
    location / {
        root   /sino/dist;
        index  index.html index.htm;
    }
    
    location /prod-api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #server_group 's name appeal twice,http://ruoyi_admin_server_group/ 拼接以后就是http://localhost:8080/
        #转发后端站点地址,一般用于做软负载,轮询后端服务器
        #如果后端只有一个 不需要upstream ruoyi_admin_server_group, 只此 proxy_pass http://localhost:8080/; 即可
        proxy_pass http://ruoyi_admin_server_group/; 
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
   
}

2、Nginx前端负载均衡

upstream front {
    server localhost:8017 max_fails=2 fail_timeout=10s;
    server localhost:8018 max_fails=2 fail_timeout=10s;
}
server {
    listen       8016;
    server_name  localhost;
    location /{
        proxy_pass http://front;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


# 下面两个只是展示前端的两个服务,实际应用都会指定到不同的服务器
server {
    listen       8017;
    server_name  localhost;

    location / {
        root   /opt/nginx/html/front1;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

server {
    listen       8018;
    server_name  localhost;

    location / {
        root   /opt/nginx/html/front2;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值