上一次我们讲解了springBoot项目内嵌tomcat并发访问数量提升的优化【SpingBoot项目之性能压测并提高并发访问量】,但是毕竟单台服务器性能还是有限的,无法支撑我们更大的访问数量,这时候就需要我们进行水平扩容了。引入我们的nginx
说到nginx,我们不得不提到它三个基本作用
1)作为web服务器:(可以在其html文件目下直接存放项目的html,js,css等静态资源文件,暴露出静态资源的出口供用户访问)
2)作为动静分离服务器
3)作为反向代理服务器
针对我们前后端分离的项目来说,我们前端的资源完全可以部署在nginx上作为静态资源的服务器,而后端我们的请求数据部分可以利用他反向代理的机制做一个负载均衡,用多台服务分散服务器访问的并发压力,这样我们的项目便又会提升一个等级的性能。废话不多说,直接看下面我们如何一步步实现
讲一下这里服务器的优化分布策略
本地192.168.124.34:数据库服务器
本地192.168.124.35:nginx服务器
本地192.168.124.36:项目服务器1
本地192.168.124.37:项目服务器2
服务分布架构图如上
下面我们一步步实现
1)首先安装nginx,这里我们使用openresty,关于如何安装,请看【超简单的Linux环境安装OpenResty使用Nginx】
然后将我们的前端资源都复制到 【/usr/local/openresty/nginx/html】,如下图:
然后我们直接访问
2)接下来我们需要配置我们的前端路由,当我们访问http://myserver/resources/getotp.html的时候,就是当我们的请求中包含【resources】的时候,我们会路由到nginx的静态资源服务器上,我们在nginx的conf/nginx.conf配置如下内容:
location /resources/ {
alias /usr/local/openresty/nginx/html/resources/;
index index.html index.htm;
}
平滑无缝重启我们的nginx
sbin/nginx -s reload
在我们的nginx下的html下面新建resources文件,将之前的静态资源全部拷贝到此文件中,然后进行访问
前端路由配置成功
3)后端动态路由配置,进入conf/nginx.conf的配置文件做如下配置:
#配置集群节点
upstream backend_server{
server 192.168.124.36:8090 weight=1;
server 192.168.124.37:8090 weight=1;
}
server {
listen 80;
server_name localhost;
#前端静态路由页面
location /resources/ {
alias /usr/local/openresty/nginx/html/resources/;
index index.html index.htm;
}
#后端动态路由地址集群
location / {
proxy_pass http://backend_server;
proxy_set_header Host $http_host:$proxy_port;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html; }
}
然后做好前期准别工作,开启192.168.124.34数据库服务器的mysql
分别启动192.168.124.36的项目和192.168.124.37的项目,启动之间,记得修改外挂配置文件中数据库的配置,这样,36和37都可以访问34了,下面我们重启nginx,看一下配置是否生效。
首先访问访问
http://192.168.124.35/resources/getotp.html
跳转到前端静态页面
然后访问
http://192.168.124.35/item/list
一切正常,目前看来无论是我们的前端路由还是后端动态路由的负载均衡机制都成功了,但是我们需要验证一下后端动态路由。
4)验证后端动态路由的有效性
如何验证我们需要开启tomcat的accesslog日志
4.1)分别在两个项目的目录下面新建一个文件夹用来存储accesslog日志,并授予权限
mkdir tomcat
chmod 777 tomcat
4.2)在【application.properties】中开启我们的accesslog日志
#日志开关
server.tomcat.accesslog.enabled=true
#日志格式
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
server.tomcat.accesslog.directory=/usr/local/java/tomcat
然后分别重启我们两台服务器的项目
重启之后进入我们的tomcat目录下面就可以看到已经生成了日志
然后我们分别打开两个项目生成的accessslog日志
tail -f 日志名称
我们访问: http://192.168.124.35/item/list 地址几次之后,可以看到我们的accesslog日志文件中分别记载了我们的访问记录
至此我们的验证成功。
还有最简单你粗暴的验证就是关掉一台服务器的项目,访问我们nginxf服务器,看一看是否还会继续访问,可以访问我们的nginx动态路由就是没问题的