首页 > 其他 > 详细

第四节:Nginx负载均衡配置、缓存配置、性能调优

时间:2020-12-19 12:19:43      阅读:37      评论:0      收藏:0      [点我收藏+]

一. 负载均衡

1. 用法

 通过proxy_pass 可以把请求代理至后端服务,但是为了实现更高的负载及性能, 我们的后端服务通常是多个, 这个是时候可以通过upstream 模块实现负载均衡。

负载均衡的算法有:

  • ll:轮询
  • ll+weight: 轮询加权重 

  • ip_hash : 基于Hash 计算,用于保持session 一至性      该算法下权重失效

  • url_hash: 静态资源缓存,节约存储,加快速度(第三方)  该算法下权重配置失效

  • least_conn :最少链接(第三方)

  • least_time  :最小的响应时间,计算节点平均响应时间,然后取响应最快的那个,分配更高权重(第三方)

2. 参数

upstream 相关参数如下:

  • server  反向服务地址加端口

  • weight  权重,默认是1,越大权重就越大

  • max_fails  失败多少次认为主机已挂掉则,踢出 (默认配置10s,即服务器宕掉,会自动剔除)

  • fail_timeout  踢出后重新探测时间 

  • backup  备用服务,当其他非backup的机器全部宕机或者繁忙的时候,才会启动这台机器。

  • down  表示当前Server不参与负载
  • max_conns 允许最大连接数

  • slow_start 当节点恢复,不立即加入,而是等待 slow_start 后加入服务对列。

3. 案例

事先准备:

  有三个同样的api服务,分别部署在9001、9002、9003端口下,比如:访问 http://localhost:9001/Home/GetMsg,会返回 【 获取成功,当前端口为:9001】,其它端口类似。

要求:

 Nginx监听8080端口,接收到8080端口的请求,按照响应的算法进行转发到9001-9003端口。 

(1). 轮询

 访问地址:http://localhost:8080/Home/GetMsg ,会依次转发到9001、9002、9003端口上。

配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream myApiTest {
          server localhost:9001;
          server localhost:9002;
          server localhost:9003;
    }
    server {
        listen       8080;
        server_name   xxx;    #随意配置一个即可,优先走代理地址
        location / {
            proxy_pass http://myApiTest;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

补充其他参数说明:

 下面配置,当请求 http://localhost:8080/Home/GetMsg 时候,只会被转发到9003端口上,此时把9003端口的服务关掉,再次请求,则会被转发到9001端口上,其中9002端口,全程不参与负载。

 

upstream myApiTest {
    server localhost:9001 backup;
    server localhost:9002 down;
    server localhost:9003;
}

(2).轮询+权重

  下面配置,被转发到9001 9002端口的概率要大于9003端口。

配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream myApiTest {
          server localhost:9001 weight=10;
          server localhost:9002 weight=5;
          server localhost:9003;
    }
    server {
        listen       8080;
        server_name   xxx;    #随意配置一个即可,优先走代理地址
        location / {
            proxy_pass http://myApiTest;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

(3). ip_hash

 主要用来解决Session不一致的问题,但是该策略下,weight权重无效,所以该方案会导致某个Server压力可能过大,请求分配不均匀问题。

 

(4). url_hash

 

 

 

 

 

 

二. 缓存配置

 

 

 

 

 

 

 

三. 性能调优

 

 

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

第四节:Nginx负载均衡配置、缓存配置、性能调优

原文:https://www.cnblogs.com/yaopengfei/p/14158212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!