• linux(1.nginx基础 && 2.使用Nginx负载均衡及动静分离)


    一.nginx基础

    目录

    • 1. Nginx使用场景
    • 2. Nginx中的进程
      • 2.1 Nginx中的多进程模型
      • 2.2 多进程模式的优点:
      • 2.3 缓存
    • 3. Ngnix的负载均衡策略
      • 3.1 轮询法
      • 3.2 加权轮询
      • 3.3 原地址哈希
      • 3.4 最小连接数法
      • 3.5 Fair
      • 3.6 url_hash
    • 3. Nginx配置文件
    • 4. Nginx+tomcat 集群示例
      • 4.1 下载镜像
      • 4.2 在宿主机中创建需要挂载的目录
      • 4.3 常见测试用的index.html
      • 4.4 创建Nginx配置文件
      • 4.5 启动3个tomcat容器准备集群
      • 4.6 根据tomcat容器实际IP修改Nginx配置文件
      • 4.7 启动Nginx容器
      • 4.8 测试集群
    • 5. Nginx部署静态网站
      • 5.1 准备前端应用
      • 5.2 创建构建目录
      • 5.3 构建镜像
      • 5.4 运行容器

    1. Nginx使用场景


    Nginx的主要使用场景:

    • HTTP服务器
      Nginx可以作为静态服资源服务器来使用,例如在前后端分离的架构中可以将前端应用部署在Nginx服务器中。也可作为上传服务器、图片服务器等使用
    • 作为反向代理
      Nginx可以作为反向代理,将来自互联网的外部请求转发到内网中应用服务器。通过反向代理可以实现负载均衡。
      Nginx内置了丰富的负载均衡算法:轮询,基于权重,ip_hash等,通过第三方支持,还有fair(响应时间短的优先分配),url_hash等。

    2. Nginx中的进程


    2.1 Nginx中的多进程模型


    Nginx的具有很高的性能,有庞大的使用群体,这与它的基本架构有紧密关系。
    在Nginx运行时后台包括一个master主进程和多个worker进程。Nginx也可以支持多线程方式工作,但模式使用多进程,也是主流的使用方式。

    • master进程
      主进程主要进行Nginx配置文件解析,数据结构初始化,模块注册配置,信号处理,网络监听,工作进程生成和管理等工作。监控worker进程的状态,在worker进程异常退出后可以自动重新启动进程。

    • worker进程
      多个worker进程之间是对等的关系,竞争去处理客户的请求,一个请求只有一个worker去处理。worker进程数量一般与机器cpu数量相当。每个worker都是单线程的,采用异步非阻塞方式处理请求。是Nginx服务器提供服务的主体。

    当一个请求进来时,多个worker会竞争处理这个请求,但有且只有一个worker可以获取到该请求的处理权限。

    2.2 多进程模式的优点:


    每个worker进程是互相独立的,互相不影响,一个进程的退出不影响其他的进程服务。每个worker进程使用异步非阻塞方式来处理请求,具有很高的性能。

    2.3 缓存


    Nginx服务器为提供请求的处理效率,减轻网络压力,采用缓存机制。缓存机制将历史应答的数据缓存到本地,并且在Nginx启动后会启动一个专门的后台进程对本地缓存内容建立维护索引,以此来加快缓存文件的访问。

    所以Nginx的后台进程出master进程,worker进程以外,还有后端服务进程。

    3. Ngnix的负载均衡策略


    Nginx中支持多种负载均衡策略,在不同的使用场景中我们可以选择合适的负载均衡策略

    3.1 轮询法


    将请求轮流分配到注册的后端服务器中,平等的对待所用的后端服务器,不关心服务器的实际连接数就负载情况。比较适合后端服务器的配置都差不多的情况。例如如下配置:

    1. upstream server {
    2. server 192.160.0.123:8080;
    3. server 192.160.0.124:8080;
    4. server 192.160.0.125:8080;
    5. }

    3.2 加权轮询


    可以为每个武器配置一个权重值,权重值越大将会有机会分担更多的请求,该配置方式比价适合集群中各个服务器配置不均衡的情况,对高的服务器可以配置大一些的权重,对配置低的机器可以配置小一些的权重。

    1. upstream server {
    2. server 192.160.0.123:8080 weight=4;
    3. server 192.160.0.124:8080 weight=2;
    4. server 192.160.0.125:8080 weight=1;
    5. }

    3.3 原地址哈希


    根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器的大小进行取模计算,得到的结果作为客户端要访问的服务器的序号。

    特点:这种方式可以保证来自同一ip的请求被打的固定机器上,可以解决session问题。

    示例:

    1. upstream server {
    2. ip_hash;
    3. server 192.160.0.123:8080 weight=1;
    4. server 192.160.0.124:8080 weight=2;
    5. server 192.160.0.125:8080 weight=1;
    6. }

    3.4 最小连接数法


    该算法根据后端服务器当前的连接情况,动态的选取其中当前堆积的连接数最少的一台服务器来处理请求,以便于提高服务的利用率。

    这种算法比较适合后端各个服务器配置不同的情况。

  • 相关阅读:
    基因家族特征分析 - 染色体定位分析
    附加:一个工具类,什么时候建议被IoC管理,什么时候不建议被IoC管理;(慎看,本篇博客的观点,可能存在偏差、甚至是错误;)
    FSAF:嵌入anchor-free分支来指导acnhor-based算法训练 | CVPR2019
    MySQL optimizer_trace
    python计算点到面的距离
    第一次搭建接口自动化测试框架有什么要注意的吗?
    邮件安全不容忽视,教你如何防止邮件泄密!
    虚拟内存系统【页面置换算法】
    分类预测|基于贝叶斯优化长短期记忆网络的数据分类预测Matlab程序 多特征输入多类别输出 BO-LSTM 附赠预测新数据
    java高校就业宣讲会系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  • 原文地址:https://blog.csdn.net/m0_64863860/article/details/127741955