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     }
发布了99 篇原创文章 · 获赞 3 · 访问量 1600

猜你喜欢

转载自blog.csdn.net/weixin_45784367/article/details/104694480