文章目录
本章目标
- nginx反向代理均衡
- 分布式会话管理
- 使用redis实现分布式会话存储
4-1 Nginx反向代理
上一章我们看到当单机系统时候,容量有限,响应时间变长TPS上不去的问题。nginx反向代理的功能就是代理后端Tomcat服务器集群,以统一域名方式来访问
- 单机容量问题,水平扩展
- nginx反向代理
- 负载均衡配置
当我们用
top -H
命令查询cpu运行状况时,单机运行很卡,表象是cpu使用率增高,内存memory占用增加,网络带宽使用增加,有几个参数值得注意
- cpu us : 用户空间cpu使用情况(用户态进程占比)
- cpu sy:内核空间cpu使用情况(核心态进程占比)
- load average:1分钟/5分钟/15分钟负载load平均值,跟着核系数变化,0表示正常,1表示cpu打满,1+代表等待阻塞
- memory:free 空闲内存,used使用内存
4-2 单机容量问题,水平扩展
这次的水平扩展指的是对应用系统程序扩展,而mysql数据库只有一个,用来开放远端连接(mysql读写分离、分库分表等方法可实现mysql水平扩展,这里没讨论),服务端实现水平对称部署,最后验证访问
Nginx系统框图如下:
我们在阿里云就需要4台服务器(其中1台用作数据库,2台用作应用进程,1台用作nginx反向代理)
4-3修改前端资源用于部署nginx
nginx有三种用途:
- 使用nginx作为web服务器(静态资源访问)
- 使用nginx作为动静分离服务器
- 使用nginx作为反向代理服务器(动态资源请求)
整个项目前端H5请求的类型有两种,一种是静态资源,一种是ajax请求动态资源。对于ajax向域名miaoshaserver请求时,mginx会作为反向代理部署到不同miaosha项目jar包下;而对于静态资源(static,HTML,CSS等)访问域名miaoshaserver/resources时,nginx会向本地磁盘请求资源(企业级应用通常使用的是NAS)
那先部署静态资源请求:
在static静态资源目录下新建gethost.js,用来方便配置修改远端连接地址,然后在每个页面上对应修改,然后将静态资源上传到服务器上
4-4 部署Nginx OpenResty
使用Nginx的框架OpenResty来开发配置Nginx,OpenResty是基于NGINX和LuaJIT的动态Web平台。优点是可以支持lua的一些开发。
将nginx指定成web服务器
- location节点path :指定url映射key
- location节点内容:root指定location path后对应的根路径,index指定默认的访问页
- sbin/nginx -c conf/nginx.conf启动
- 修改配置后直接
sbin/nginx -s reload
无缝重启
访问nginx服务器ip地址,出现welcome to OpenResty 则成功😄
4-5/6 前端资源部署
-
scp 指令将htmlStable文件夹上传到//usr/local/openresty/nginx/html目录下
-
修改本地hosts文件指定nginx的IP地址域名为miaoshaserver
-
修改nginx目录下conf文件:
当我们浏览器访问miaoshaserver/resources/…时,访问的是/usr/local/openresty/nginx/html/resources/目录下的静态资源文件,做到H5请求静态资源到nginx服务器
- 使用
sbin/nginx -s reload
无缝重启,指的是修改nginx配置文件后不需要重启nginx服务器,连接不会断,只变化了进程号
可以看到执行命令前后 master进程不改变,worker进程的进程号变化
4-7 Nginx配置动静分离服务器
location 节点path特定resources : 静态资源路径
location节点其他路径:动态资源用
-
设置upstream server
-
设置动态请求location为proxy pass 路径
-
开启tomcat access log 验证
设置upstream server