微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LNMP架构7——搭建nginx反向代理实现tomcat负载均衡

文章目录

一、前言

tomcat主要用于web网页应用,它的静态处理能力低于Nginx服务器但是可以当做容器主要用于JAVA程序编写的页面.jsp。用于测试。

可以实现负载均衡,反向代理,tomcat和其他的服务相比较,性价比高。另外tomcat是有apache基金会维护和支持

本次实验我将搭建Nginx作为反向代理服务器,转发多个tomcat服务器,实现负载均衡。

在这里插入图片描述

二、搭建Nginx反向代理实现tomcat负载均衡

实验环境

主机名 ip 服务
server1 172.25.1.101 lnmp+memcache+OpenResty+tomcat+jsp
server2 172.25.1.102 tomcat+jsp
真机 172.25.1.250 客户端

实验

在server1上:

步骤 一:将加压配置好的tomcat和jkd文件发送到server2上

cd /usr/local
scp -r apache-tomcat-7.0.37 jdk1.7.0_79 root@server2:/usr/local/

在server2上:

步骤一:做软链接

cd /usr/local
ln -s apache-tomcat-7.0.37 tomcat
ln -s jdk1.7.0_79 java

在这里插入图片描述

步骤二:配置环境变量

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLAsspATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export  PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

在这里插入图片描述

步骤三:编辑openresty中配置文件添加tomcat主机,并重启Nginx

如果没有配置openresty,则直接修改Nginx配置文件

cd /usr/local/openresty/Nginx/conf/
vim Nginx.conf

 17 http {
 18     upstream tomcat{
 19         server 172.25.1.101:8080; 
 20         server 172.25.1.102:8080;
 21     }

 72         location ~ \.jsp$ {
 73             proxy_pass   http://tomcat;
 74         }

/usr/local/openresty/Nginx/sbin/Nginx -t
/usr/local/openresty/Nginx/sbin/Nginx -s reload

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

步骤四:先删除原有测试页,再编辑新测试页test.jsp,并发送server2

cd /usr/local/tomcat/webapps/ROOT/
rm -fr test.jsp 
vim test.jsp 

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataname = request.getParameter("dataname");
if (dataname != null && dataname.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataname, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataname">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>

scp test.jsp server2:/usr/local/tomcat/webapps/ROOT/

在这里插入图片描述

步骤五:重启tomcat,并查看端口

cd /usr/local/tomcat/bin/
./shutdown.sh 
./startup.sh 
netstat -antuple

在这里插入图片描述

在server2上:

cd /usr/local/tomcat/bin/
./startup.sh 

在这里插入图片描述

在真机上:

打开浏览器访问测试页http://172.25.1.101/test.jsp

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结

可以看到两个服务器轮流对客户端提供服务。由此,客户端提交数据到一台主机上,轮询调度时会发生数据丢失。举个简单的例子,用户登陆淘宝页面,服务器A提供服务,用户输入登陆信息,点击登陆,刷新页面同时后端服务器调转到B上,用户输入的信息丢失,反复出现登陆界面。具体解决方法下一篇

补充:
在server1上:
我们还可以在配置文件添加权重weight

vim /usr/local/openresty/Nginx/conf/Nginx.conf

 17 http {
 18     upstream tomcat{
 19         server 172.25.1.101:8080 weight=1;
 20         server 172.25.1.102:8080 weigth=2;
 21     }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐