实战一:安装tomcat
1、安装JDK
# cd /usr/local/src/
# tar -zxf jdk-8u271-linux-x64.tar.gz
# mv jdk1.8.0_271/ /usr/local/jdk1.8
# vim /etc/profile //设置环境变量,加入以下内容
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/
lib/charsets.jar //这是一行
# source /etc/profile //使文件生效
# java -version //检测设置是否正确
如显示下图内容,则说明配置正确:
2、安装Tomcat
# cd /usr/local/src/
# tar -zxf apache-tomcat-8.5.60.tar.gz
# mv apache-tomcat-8.5.60 /usr/local/tomcat
# /usr/local/tomcat/bin/startup.sh //启动Tomccat
# netstat -ntlp |grep java // 查看是否启动成功
# echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local
# chmod a+x /etc/rc.d/rc.local //这两步为设置开机启动,并给文件加执行权限
# setenforce 0 //关闭SELinux服务
# systemctl stop firewalld //关闭防火墙
在浏览器中输入http://192.168.200.20:8080/,就会看到Tomcat的默认页面,如下图所示:
实战二:实现LNMT,nginx代理tomcat
一、在nginx设置跳转
1、在主机配置文件中加入代理命令:
# cd /usr/local/nginx/conf/vhost/
# vi default.conf //在server段加入以下命令
location / {
proxy_pass http://192.168.200.30:8080;
proxy_set_header Host $host;
}
location ~* \.(jsp|do)$ {
proxy_pass http://192.168.200.30:8080;
proxy_set_header Host $host;
}
2、在浏览器中直接访问80端口即可代理8080端口:
3、实现集群代理服务:
# vi /usr/local/nginx/conf/vhost/default.conf //在配置文件中加入以下内容
在server段里加入
location / {
proxy_pass http://tomcat_srv;
proxy_set_header Host $host;
}
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat_srv;
proxy_set_header Host $host;
}
在server段外加入
upstream tomcat_srv {
server 192.168.200.20:8080 weight=1;
server 192.168.200.10:8080 weight=2;
}
(1)创建测试页面:
在server1(IP为192.168.200.20)上定义一个页面:
# vi /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<% out.println("hello world");%>
</body>
</html>
在server2(IP为192.168.200.10)上定义一个页面:
# vi /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<% out.println("hello world2");%>
</body>
</html>
页面测试访问:
会出现轮询情况。
实战三:LNMT的会话保持原理基于ip_hash实现
一、实现基于ip_hash实现会话保持
# vi /usr/local/nginx/conf/vhost/default.conf //只需加入ip_hash即可
现在我们会话保持成功,没有轮询。
实战四:基于tomcat会话集群实现LNMT的会话保持
一、节点准备:
机器名称 |
IP配置 |
服务角色 |
备注 |
Nginx |
192.168.200.10 |
代理服务器 |
开启代理功能 |
Tomcat-srv1 |
192.168.200.20 |
Web服务 |
配置集群会话 |
Tomcat-srv2 |
192.168.200.30 |
Web服务 |
配置集群会话 |
Nginx节点配置文件:
Tomcat-srv1节点配置文件:
Tomcat-srv2节点配置文件:
二、tomcat集群会话的配置
在nginx节点:
# cd /usr/local/tomcat/
# vim conf/server.xml //在Engine引擎段中,添加以下内容
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="/"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
如下图所示:
三、配置注释
四、创建测试页面
Nginx节点下:
# mkdir webapps/test
# cd webapps/test
# mkdir WEB-INF //设置一个web.xml的配置文件
# cp /usr/local/tomcat/conf/web.xml WEB-INF/
# vim WEB-INF/web.xml
在</web-app>上加一行<distributable>表示分布式,如下图所示:
在tomcat-srv1节点和tomcat-srv2节点分别创建测试页面,在tomcat-srv1上是TomcatA;在tomcat-srv2上是TomcatB。
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head> 1
<body>
<h1><font color="blue">TomcatA </h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
五、测试
1、浏览器访问http://192.168.200.10/test/session.jsp,轮询,但是sessionID是一样的,会话保持成功,如下图所示: