之前我们已经实现了客户端访问nginx服务器的时候,通过jsp动态获取tomcat服务器上面的资源
接下来实现nginx做反向代理+tomcat做web服务器实现两个web(tomcat1和tomcat2)之间的负载均衡
并且客户端可以在浏览器动态注册信息,web1和web2轮询
但是没有会话保持,每刷新一次数据就可能会丢失
1.实验环境
两个企业6的虚拟机和一个企业7的物理机
主机信息 | 主机功能 |
---|---|
虚拟机server1(172.25.8.1) | nginx反向代理+tomcat1服务器 |
虚拟机server2(172.25.8.2) | tomcat2服务器 |
2.具体实现的过程如下
- (1)在server1上面:
cd /usr/local
ll
scp -r apache-tomcat idk root@172.25.12.2:/usr/local将tomcat服务器的两个目录传给server2虚拟机
- (2)在server2上面:
vim /etc/profile
写入java的环境变量
source /etc/profile
java tab
java -version
cd /usr/local
ll
ln -s apache-tomcat tomcat
- (3)在server1上面:
cd /usr/local/openrestry/nginx/conf
vim nginx.conf
加入
upstream memcache {
server 172.25.12.1:8080;
server 172.25.12.2:8080;
}
- (4)测试
此时在浏览器里面访问172.25.12.1:8080可以访问(因为tomcat服务器默认开启8080端口)
因此可以请求到tomcta的动态资源(通过jsp)
此时不可以在浏览器浏览器里面访问172.25.12.1/index.jsp
- (5)在server2上面:
cd /usr/local
cd tomcat/
ls
cd bin/
./startup.sh
netstat -tnlp
- (6)在server1上面:
cd /usr/local/tomcat/
cd webapps/ROOT/
ls
cat test.isp
把这个文件删除,重新拷贝两个test.jsp给tomcat1和tomcat2个一个(从真机)
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh
netstat -antlupe
- (7)在server2上面:
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh
netstat -antlupe
- (8)在server1上面:
/usr/local/openresty/nginx/sbin/nginx -s reload
vim /usr/local/openresty/nginx/conf/nginx.conf
http://tomcat;让nginx去轮询两个tomcat服务器(之前是访问自己)
把/memc模块注释
/usr/local/openresty/nginx/sbin/nginx -s reload
ps ax查看nginx是否开启
netstat -antlupe
- (9)测试:清空一下浏览器的缓存,开始测试
172.25.12.1/test.jsp这是一个动态页面
发现同一个用户注册信息,轮询两个tomcat服务器,这样会造成用户的数据丢失
就像用户第一次注册了数据,第二次登录说不存在一样
因为第一次注册的数据可能访问的是tomcat1,第二次登录的时候是tomcat2
nginx负责负载均衡,客户根本不知道后台是两个服务器在轮询
此时的两个tomcat服务器之间没有任何关系