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 轮询法


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

upstream server {
    server 192.160.0.123:8080;
    server 192.160.0.124:8080;
    server 192.160.0.125:8080;
}

3.2 加权轮询


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

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

3.3 原地址哈希


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

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

示例:

upstream server {
    ip_hash;
    server 192.160.0.123:8080 weight=1;
    server 192.160.0.124:8080 weight=2;
    server 192.160.0.125:8080 weight=1;
}

3.4 最小连接数法


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

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

你可能感兴趣的:(nginx,tomcat)