负载均衡-Nginx

Nginx是什么?

       Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

现在一般大型web项目采用的技术架构参照图如下:

 负载均衡定义:

       在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

 Nginx对比LVS:

 为何Nginx负载均衡会产生session不一致问题?

常见的负载均衡算法:

1. 轮询(加权轮询) : 平均分配,加权轮询则权重大的轮询两次

2. 随机算法(加权随机): 随机分发请求

3. 最小连接数 : 多个服务器中,与处理连接数(会话数)最少的服务器进行通信的算法

4. IP哈希算法 : 根据客户端IP,哈希取模,得到的结果便是要访问的服务器的序号

5. URL散列 : 同一URL发往同一服务器。url链接地址哈希取模计算分配服务器序号

解决session不一致的方法:

1. session粘滞:-》适用IP哈希算法
nginx配置 :

     upstream balance(变量名可变) {
          ip_hash;
         127.0.0.1:8001 weight =1 (权重配置);
         127.0.0.1:8002 weight =3 ;
       }

优点:
      1、配置简单,不入侵应用。
      2、便于服务器水平拓展。
缺点:
      1、服务器重启session丢失
      2、存在单点负载高的风险
      3、 单点故障问题

2. session复制:

    原理: tomcat 配置session同步
优点:
      1、不入侵应用(存储在session中的对象全部需要序列化),便于服务器水平扩展
      2、能适应各种负载均衡策略
      3、服务器重启或宕机不会造成session丢失
缺点:
     1、性能低
     2、内存消耗
     3、代码考虑(session序列化)

3. session共享:
       对象同样需要序列化。使用缓存中间件进行管理-> 例:redis缓存数据库实现 
优点 :

    1、适用各种负载均衡策略,可拓展,适用于集群分布较大的应用

    2、session不会因为服务器重启等故障丢失。

缺点 :

   1、需要使用中间件,代码被修改

   2、序列化和反序列化占用较大资源.

什么是Nginx主从?

   nginx主从策略主要是为了防止出现nginx服务器挂掉,然后服务端瘫痪的问题。

 

  以上草图可以很直观的看出,作者的绘画功底很差。。。

 给大家分享一波小技巧:

    查看各大型网站是否使用Nginx以及是否配置主从策略:

    进入网站 - > 按F12 :

预知后事如何,待下回分解。

原文地址:https://www.cnblogs.com/weekstart/p/nginx.html