【Nginx】Nginx核心原理及负载均衡策略

一、什么是Nginx

它是一个高性能的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。

Nginx内存小(1M),并发能力强。官方公布的数据显示,最高支持5万个并发连接的响应。而Tomcat一般才支持500多个

二、Nginx的三大功能

1、反向代理

也就是将代理中间部署在服务器端。如,我们访问百度网站,域名都是一样的,但每次访问的服务器可能是不同的

与此相对的是正向代理,正向代理是将代理部署在客户端,如我们常用的VPN就是一种

2、负载均衡

就是将不同用户的请求,通过均衡策略,分发到不同的服务器中进行响应。

Nginx的负载均衡策略分为两种:内置策略和扩展策略。

其中内置策略有三种:轮询,加权轮询,ip_hash

扩展策略也就是可以自定义策略方案。

# 轮询 (默认)
upstream a_server{
    server 172.0.0.2:8080;
    server 172.0.0.3:8080;
}

# 加权轮询,权重越高,被分配的请求越多
upstream a_server{
    server 172.0.0.2:8080  weight = 1;
    server 172.0.0.3:8080  weight = 2;
}

# ip_hash nginx会根据访问ip的hash结果来分配请求,每个请求会被分配到同一个后端节点,保持会话,session同步
upstream a_server{
    ip_hash;
    server 172.0.0.2:8080;
    server 172.0.0.3:8080;
}

# 最小连接策略:新的连接会负载到当前连接数最少的服务器上,该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。
upstream a_server{
    least_conn;
    server 172.0.0.2:8080;
    server 172.0.0.3:8080;
}

 

3、动静分离

这里的动静是指,访问网站时,动态资源和静动态资源。

所谓动静分离,就是将服务器中网站的静态资源和动态资源分发到不同的服务器上,实现更快速的响应。

一般将静态资源放入Nginx服务器,动态资源放入我们的常规服务器

Nginx中的ip_hash技术能够将某个ip 的请求定向到同一台后端web机器中,
这样一来这个ip 下的客户端和某个后端 web机器就能建立起稳固的session. ip_hash机制能够让某一客户机在相当长的一段时间内只访问固定的后端的某台真实的web服务器,
这样会话就会得以保持,在网站页面进行login的时候就不会在后面的web服务器之间跳来跳去了,
也不会出现登录一次的网站又提醒重新登录的情况. Ip_hash是在upstream配置中定义的: upstream nginx.example.com{ server
192.168.74.235:80; server 192.168.74.236:80; ip_hash; } server{ listen 80; location /{ proxy_pass http: //nginx .example.com; } } Ip_hash机制缺陷: (1)nginx不是最前端的服务器 ip_hash要求nginx一定是最前端的服务器,否则nginx得不到正确ip,就不能根据ip作hash.
Eg: 使用的是squid为最前端.那么nginx取ip时只能得到squid的服务器ip地址,
用这个地址来作分流肯定是错乱的 (
2)nginx的后端还有其它负载均衡 假如nginx后端还有其它负载均衡,将请求又通过另外的方式分流了,
那么某个客户端的请求肯定不能定位到同一台session应用服务器上,
这么算起来,nginx后端只能直接指向应用服务器,或者再搭一人squid,然后指向应用服务器.
最好 的办法是用location作一次分流,将需要session的部分请求通过ip_hash分流,
剩下的走其它后端去.

  【参考B站狂神视频:https://www.bilibili.com/video/BV1F5411J7vK】

posted @ 2021-03-27 11:09  CEO雷总  阅读(91)  评论(0编辑  收藏  举报