通过Nginx学习负载均衡

上篇文章介绍了 Nginx 反向代理方面的相关配置,还没有看的小可爱快去瞅瞅

本篇文章参考以下博文


https://www.cnblogs.com/zhang-jun-jie/p/9266858.html 写脚本教程

1.Nginx 配置实例—负载均衡

  负载均衡(load balance)顾名思义,是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。
在这里插入图片描述

  快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx 、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式(策略):

1.1轮询(默认)

  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

1.2 weight

  weight 代表权,重默认为1,权重越高被分配的客户端越多。指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

1.3 ip_hash

  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

1.4 fair(第三方)

  按后端服务器的响应时间来分配请求,响应时间短的优先分配。

1.5 样例配置

在这里插入图片描述

2.Nginx 配置实例—动静分离

  Nginx 动静分离严格意义上说是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种:

  • 纯粹把静态文件独立成单独的域名,放在独立的服务器上,目前主流推崇的方案;
  • 动态跟静态文件混合在一起发布,通过 Nginx 来分开。
    (具体做法是通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量)

  具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。

在这里插入图片描述

3.Nginx 原理与优化参数配置

3.1 master-workers 机制

  Nginx使用的是 master-workers 机制。该机制的执行原理如下。
在这里插入图片描述
  1.对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。

  2.采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的 worker 进程。

  3.worker 进程的异常退出,肯定是程序有bug了,异常退出,会导致当前 worker 上的所有请求失败,不过不会影响到所有请求,降低了风险。

3.2 设置 worker 数量

  Nginx redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是千上万个请求也不在话下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu ,设多了会造成 cpu 频繁切换上下文带来的损耗。

worker_processes 4
#work绑定cpu(4 work绑定4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work绑定cpu (4 work绑定8cpu中的4) 。
worker_cpu_affinity 0000001 00000010 00000100 00001000

3.2 连接数 worker_connections

  这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接数是

  worker_connections * worker_processes

  这里说的是最大连接数,对于 HTTP 请求本地资源来说,能够支持的最大并发数量是

  worker_connections * worker_processes

  如果是支持 http1.1 的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是:

  worker_connections * worker_processes /2

  如果是 HTTP 作为反向代理来说,最大并发数量应该是

  worker_connections * worker_processes/4

  因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。

4.Nginx 高可用集群搭建

在这里插入图片描述
  网络搭建要考虑到各种异常情况下,如上图所示,如果 nginx 出现宕机情况,所有资源都会出现无法访问的问题。这就需要增加一台服务器,在主机异常的情况下,及时启动,保证请求顺利。
在这里插入图片描述
在这里插入图片描述
  

  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值