自学内容网 自学内容网

nginx的学习(二):负载均衡和动静分离

简介

nginx的负载均衡和动静分离的简单使用

负载均衡配置

外部访问linux的ip地址:80/edu/a.html地址,会轮询访问Tomcat8080和Tomcat8081服务。

Tomcat的准备

准备两个Tomcat,具体准备步骤在nginx的学习一的反向代理例子2中,在Tomcat8080中的/usr/src/tomcat8080/apache-tomcat-7.0.70/webapps目录下,创建edu文件夹,在edu文件夹中创建a.html。

<h1>8080</h1>

修改nginx的配置

修改/usr/local/nginx/conf目录下的nginx.conf文件。
在http块中添加:

 upstream myserver{
 server linux的ip地址:8080;
 server linux的ip地址:8081;
  }

在server块中的location块中添加:

 server {
          listen       80;
          server_name  linux的ip地址;  
          location / {
  proxy_pass http://myserver;
          }
          }

重启nginx

测试

外部访问linux的ip地址:80/edu/a.html
在这里插入图片描述
点击刷新,会访问8081Tomcat服务。

nginx的负载均衡策略

  • 轮询,是默认的方案,服务挂掉会自动剔除
  • 权重
  • ip hash:按访问的ip的hash结果分配,每个访客固定访问一个后端服务器,可以解决session问题
  • fair:需要第三方插件,按后端服务器的响应时间来请求分配,响应时间短的优先分配。

nginx的动静分离

把动态请求和静态请求区分开来,主要有两种:

  • 把静态文件独立成单独的域名,放在独立的服务器上(主流)
  • 把动态请求和静态请求混在一起发布,使用nginx区分。

可以调高访问的效率。

配置动静分离

把静态资源放到linux上,在外部访问linux的ip地址:80/image/linux的ip地址:80/image/的时候,可以访问到linux上的静态资源。

环境准备

在根目录下创建一个data文件,mkdir data
进入data,创建一个view和一个image文件夹mkdir view image
在view中创建一个a.html页面,内容是: < h1>static view < /h1>
在image中放一张图片,finalshell直接上传

修改nginx的配置文件

修改/usr/local/nginx/conf目录下的nginx.conf文件。
在server块中添加:

  location /view/ {
  root /data/;
  }
  location /image/ {
  root /data/;
  }  

重启nginx服务器

测试

外部访问linux的ip地址:80/view/a.html
在这里插入图片描述
外部访问linux的ip地址:80/image/
在这里插入图片描述

nginx的高可用

当nginx只有一个的时候,如果nginx挂了,那系统就不能使用了,所以需要保证nginx的高可用性。增加nginx服务器作为从nginx,主nginx负责转发请求,当主nginx宕机了后,由从nginx来转发请求。配置主从nginx需要软件keepalived.
两台服务器都下载keepalived,修改keepalived的配置文件,里面可以配置
主还是从,以及虚拟ip地址。然后还要写一个检测脚本,用来检查主nginx是否可用,不可用会自动切换。
就可以通过虚拟ip访问了。

nginx原理

master 和worker

启动nginx,会有master和worker进程。
在这里插入图片描述
master是管理监控worker的,worker可以有多个。

有请求来到nginx的时候,请求会来到master,它把任务给下面的worker,多个worker通过争抢的方式得到请求,然后完成具体的操作。

一个master,多个worker的好处

  • 利于nginx进行热部署操作
  • 每个worker都是独立的,不需要加锁,节省性能的开销
  • 其中的一些worker出异常了,也不影响整体的功能

一般设置的worker数量等同于服务器的cpu数量

连接数worker_connection
发送一个请求,占用2个或者4个worker的连接数
访问静态资源占一个,返回资源占一个
如果是动态资源,还要访问服务占一个,返回服务资源占一个

如果nginx有一个master,4个worker,每个worker支持最大连接数是1024个,支持41024/2(静态资源)或者41024/4(动态资源)的最大并发数。


原文地址:https://blog.csdn.net/weixin_45037073/article/details/140713377

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!