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

本次实验是在LNMP架构——部署nginx+jsp+tomcat实现动静态资源分离基础上进行的,搭建了lnmp+memcache+openresty+tomcat+jsp环境基础上进行的,接下来我将配置tomcat+jsp负载均衡,可参考上一篇搭建出相同环境。
如果您的实验未搭建openresty+memcache并不影响本次实验,只是影响客户端访问性能。

一、前言

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

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

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

在这里插入图片描述

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

实验环境
主机名ip服务版本
server1172.25.1.101lnmp+memcache+OpenResty+tomcat+jsprhel6.5
server2172.25.1.102tomcat+jsprhel6.5
真机172.25.1.250客户端rhel7.3
实验

重新创建一个虚拟机server2

在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     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值