本博客可以在本地(window)安装两个tomcat,可以同时访问两个项目,通过nginx配置两个tomcat实现负载均衡
如果你原来安装过tomcat,需要找一个新的tomcat(因为原来的tomcat里面有许多项目信息,如果你觉得不重要你也可以复制一份作为新的tomcat)
旁白:tomcat不分window和Linux版本,因为 tomcat bin文件中有 startup.bat (window启动) 和startup.sh (Linux启动),其他命令类似;java jdk 分 window 和 Linux版本(Java是跨平台的,不同操作系统生成class文件的方式可能有所差异,但生成的class文件相同)
apache-tomcat-7.0.53
链接: https://pan.baidu.com/s/1p4BcMPpzhjUP9xm-oGIYDg .提取码:u7mg
apache-tomcat-8.5.55
链接: https://pan.baidu.com/s/1kM-PBjCDR3w12wNvPrw1pw.提取码:y0mv
进入apache-tomcat-7.0.53 和 apache-tomcat-8.5.55 的 conf 目录,打开server.xml文件,修改如下两部分( 将port修改为未被使用的端口号 )
右键我的电脑---->属性---->高级系统设置----->环境变量
在系统变量中添加如下配置(注意修改为你的安装路径)
CATALINA_HOME F:softWareJavaapache-tomcat-7.0.53
CATALINA_HOME2 F:softWareJavaapache-tomcat-8.5.55
将 CATALINA_HOME 和 CATALINA_HOME2 加入 path(我的是win10系统,path就长这样子)
只需要修改一个tomcat,我修改的是 apache-tomcat-8.5.55 , 进入apache-tomcat-8.5.55 和 的 bin 目录修改startup.bat ,catalina.bat (如果你想使用其他命令如 shutdown.bat 也需要打开文件将所有的CATALINA_HOME 替换为 CATALINA_HOME2 ,其他命令类似)
将两个文件中所有的 CATALINA_HOME 替换为 CATALINA_HOME2 ,我用的 Nodepad++ ,直接搜索全部替换
至此两个 tomcat 配置完成,(配置完环境变量并不能立即生效,试着关闭所有命令行窗口,重新打开一个新的命令行窗口,若还是不行,重启计算机)
因为配置了环境变量,所以在任何地方,win+R 输入 cmd 调出命令行执行 startup.bat 都可以启动一个tomcat,另一个需要到文件夹启动(当让你也可以到文件夹中双击 startup.bat 启动),
旧的 apache-tomcat-7.0.53 (启动正常)
访问 http://localhost:2222/ 成功
新的 apache-tomcat-8.5.55
访问 http://localhost:8088/ 勉勉强强算成功,启动过程存在异常和乱码
如果需要如图浏览器助手私聊我
1.将 tomcat 加入 eclipse
window--->preferences---->server---->Runtime Environments---->add
2.启动两个项目
两个项目选择不同的tomcat启动
第一个项目
效果图
第二个项目
效果图
没有nginx 移步官网或者提取如下版本
nginx-1.12.2
链接: https://pan.baidu.com/s/19zPGp4c_yAUUzPahVtCv_g .提取码:webc
下载之后解压
1.将项目打成war包运行在tomcat
在本地利用两个tomcat模拟两台服务器,将项目打成 war 包分别放进 apache-tomcat-7.0.53 和 apache-tomcat-8.5.55 webapps 中
启动tomcat,进入 apache-tomcat-7.0.53/bin 目录,运行 startup.bat,tomcat 8.5类似,启动成功,访问
tomcat 7.0 http://localhost:2222/ssm
tomcat 8.5 http://localhost:8088/ssm
2.配置nginx负载均衡
① 首先在nginx的文件目录里找到nginx-conf文件,这是nginx的配置文件;在nginx-conf文件下的http节点下添加upstream节点,进行tomcat的配置,如下图所示
# 配置负载均衡
# localhost是自定义的负载均衡规则名
upstream localhost{
#Nginx是如何实现负载均衡的,Nginx的upstream目前支持以下几种方式的分配
#1、轮询(默认)
#每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
#2、weight
#指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
#3、ip_hash
#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#4、fair(第三方)
#按后端服务器的响应时间来分配请求,响应时间短的优先分配。
#5、url_hash(第三方)
#按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
ip_hash;
#本机IP+三个tomcat端口号 weight为权重,权重越大承载量越大
server 127.0.0.1:2222 weight=1;
server 127.0.0.1:8088 weight=2;
# server 127.0.0.1:8000 backup; #backup 当上面两个某一个服务器宕机,默认用这个替代宕机服务器
}
server {
listen 888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { # /代表连接所有请求,大多数情况,一些静态资源单独配置拦截与访问地址
proxy_connect_timeout 3; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 30; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 30; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_pass http://localhost; # localhost 为自定义的负载均衡名字
}
至此就可以实现简单的负载均衡了,想了解复杂的配置信息,戳下面链接
链接: https://blog.csdn.net/wangbin_0729/article/details/82109693.
配置完成,重启nginx 命令nginx.exe -s reload
window下nginx常用命令戳下面链接
链接: https://www.cnblogs.com/jianmingyuan/p/10899917.html.
3.测试结果
启动nginx
如果启动遇到错误
nginx error: CreateFile "F:softWareJava
ginx-1.12.2/logs/nginx.pid" failed
运行
nginx -c conf/nginx.conf
如上图启动成功。
打开浏览器访问 http://localhost:888/ssm 结果如图(注意一定要保证另外两个 tomcat 服务器开启,并且 war 包在服务器中)
nginx 监听 888 端口,访问项目成功,说明简单的负载均衡搭建成功
自己对一些地方还不是很熟悉,也是参考网上一些大佬的经验搭建的,搭建这么low的项目没别的目的,就是记个笔记,每天记录一点,每天成长一点,像大佬们看齐。不论你在什么时候开始,重要的是开始之后就不要停止;不论你在什么时候结束,重要的是结束之后就不要悔恨。