nginx的核心功能以及nginx的高可用性

1.nginx的核心功能

1.1反向代理

 反向代理:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

正向代理:

是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

正向代理和反向代理区别?

正向代理是在客户端的。比如需要访问某些国外网站,我们可能需要购买vpn。并且vpn是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来。

反向代理是作用在服务器端的,是一个虚拟ip(VIP)。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。

1.1.1nginx如何实现反向代理

准备: (1)springboot项目--部署运行起来,在任意目录下拉入jar包并在当前目录下运行jar包

java -jar jar包名称

 注:(1)安装jdk (2)连接的数据所在的服务器必须允许远程访问(3)linux中必须关闭防火墙

修改nginx的配置文件--代理springboot服务器

 注:更改nginx配置文件需要重启nginx

/usr/nginx/sbin/nginx -s reload

 请求资源:

 1.2负载均衡

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

常见负载均衡算法

轮询(Round Robin)

请求到达后,将客户端发送到负载均衡器的请求依次轮流地转发给服务集群的某个节点。

优点:实现简单,每个集群节点平均分担所有的请求。

缺点:当集群中服务器硬件配置不同、性能差别大时,无法区别对待。引出下面的算法。

随机(Random)

随机选取集群中的某个节点来处理该请求,由概率论的知识可知,随着请求量的变大,随机算法会逐渐演变为轮询算法,即集群各个节点会处理差不多数量的请求。

优点:简单使用,不需要额外的配置和算法。

缺点:随机数的特点是在数据量大到一定量时才能保证均衡,所以如果请求量有限的话,可能会达不到均衡负载的要求。

加权

加权算法主要是根据集群的节点对应机器的性能的差异,给每个节点设置一个权重值,其中性能好的机器节点设置一个较大的权重值,而性能差的机器节点则设置一个较小的权重值。权重大的节点能够被更多的选中。它是和随机、轮训一起使用的。

优点:可以根据机器的具体情况,分配不同的负载,达到能者多劳。

缺点:需要额外管理加权系数。

最小连接数

主要是根据集群的每个节点的当前连接数来决定将请求转发给哪个节点,即每次都将请求转发给当前存在最少并发连接的节点。

优点:可以根据集群节点的负载情况来进行请求的动态分发,即机器性能好,处理请求快,积压请求少的节点分配更多的请求。避免某个节点因为处理超过自身所能承受的请求量而导致宕机或者响应过慢。

hash

将对请求的IP地址或者URL计算一个哈希值,然后与集群节点的数量进行取模来决定将请求分发给哪个集群节点。它不是真正意义上的负载均衡,在某些意义上也是一个单点服务。

优点:实现简单

缺点:如果某个节点挂了,会使得一部分流量不可用。

1.2.1轮询

配置代理服务器的nginx.conf

 注:更改nginx配置文件需要重启nginx

         分别在IP为200的虚拟机开启端口号为8080的jar包和在IP为201的虚拟机开启端口号为8081的jar包。

在浏览器访问代理服务器监听地址,多次刷新,查看返回文本有什么规律

此处以IP地址为201的虚拟机暂时作为代理服务器使用,所以使用的IP地址为201

刷新一次

两个运行的真实服务器组成了服务器集群,使同一个IP地址却有不同的返回文本,访问了不同的端口。两个端口号循环交替访问,这就是轮询。

1.2.2权重

更改代理服务器的nginx.conf文件

 权重策略:值越大,权重越高,被访问的频率越高

 在浏览器访问代理服务器监听地址,多次刷新,查看返回文本有什么规律

 

 

 经过多次刷新实验,发现端口号8080每被访问两次,端口号8081才会被访问一次,与我们设置的权重相符。

1.3动静结合

把静态资源和动态资源分离开。静态资源交于nginx服务器统一处理,而动态资源交给tomcat服务器处理。---适合前后端不分离的情况,降低修改和维护成本。

         用户通过访问代理服务器的IP地址访问到真实服务器1和2,真实服务器加载动态资源后回到代理服务器访问被统一存放的静态资源,再展现给用户。

1.3.1配置nginx.conf

 更改了nginx的配置文件别忘了重启nginx

在nginx目录下创建static目录,将需要的静态资源拉到static目录下

访问代理服务器的监听地址

        css和jpg静态资源被加载 

 2nginx的高可用

 2.1准备服务器200作为主节点,服务器201作为从节点

 2.2主从节点安装keepalived

yum install -y keepalived  #安装keepalived

  默认安装路径: /etc/keepalived

2.3修改keepalived.conf的配置内容

 

 注:主从节点都需要该配置文件,且内容有部分不同

2.4创建nginx检测脚本

两个服务器都开启nginx ,关闭防火墙 ,开启keepalived服务

systemctl start keepalived.service   开启keepalived服务

测试:

 现在关闭主节点再次测试

 

 再次打开主节点

 只要主节点开启,从节点就不会有机会被访问,即使主节点暂时挂掉,从节点被访问到,但是当主节点再次开启时,访问端口就会又一次来到主节点。