1.描述tomcat的架构
tomcat服务器是一种Servlet/jsp容器,更实质性的说是Servlet容器,因为jsp最终还是被编译成servlet来执行的。而对于servlet来说,其最长见的用途是扩展java web服务器功能,为来自web客户的请求提供服务。它完全运行在java虚拟机上。由于它的运行在服务器端,因此他的运行不依赖于浏览器。
tomcat作为servlet容器,负责处理客户请求,把请求传给servlet并把结果返回给客户。servlet容器与servlet之间的接口是由java servlet api定义的,在此api中定义了servlet的各种方法,这些方法在servlet生命周期的不容阶段被servlet容器调用,servlet api还定义了servlet容器传递给servlet的对象类,如请求对象ServletRequest和相应对象ServletResponse。
tomcat服务器是由一系列可配置的组件构成,其中核心组件是Catalina Servlet容器,它是所有其他tomcat组件的顶层容器。tomcat的组件可以在conf/server.xml文件当中进行配置,每个tomcat组件在server.xml文件中进行配置,每个tomcat组件在server.xml文件中对应一种配置元素。
2.详细解释Tomcat的配置文件及配置文件中的参数所代表的含义。
/bin:脚本、批处理,jar文件等启动tomcat文件
/conf:存放tomcat服务器全局配置文件
server.xml: 核心配置文件;
web.xml: 默认部署应用描述符;部署,将一个web应用程序所依赖到的类装进JVM;
context.xml:默认为上下文提供配置文件;
tomcat-users.xml:为用户认证文件,Tomcat启动后会将这个文件读进内存中完成账号和密码的检测认证,所以这个文件的安全性很重要;
catalina.policy:用来定义Tomcat自身的安全和资源授权策略,如定义通过互联网访问时,哪些资源用户可以访问哪些资源用户不能访问;哪些资源能被装载,哪些资源不能被装载等等
catalina.properties:定义应用程序自身属性;如所使用的内存大小,所使用的字符串缓冲池的大小,你的server loader加载器是什么,等等
logging.properties:用来定义日志级别,以及日志文件路径
/lib:库文件路径;
/logs:日志目录;
/temp:临时目录;
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
/work:存放JSP编译后产生的class文件
server.xml文件参数详解:
<Server>
<Listener />
<GlobaNamingResources>
</GlobaNamingResources>
<Service>
<Connector />
<Engine>
<Logger />
<Realm />
<host>
<Logger />
<Context />
</host>
</Engine>
</Service>
</Server>
<\Server>元素
它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个元素.并且它不能做为任何元素的子元素.
<\Connector>元素
由Connector接口定义.元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.
<\Engine>元素
每个Service元素只能有一个Engine元素.处理在同一个中所有元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.
<\Host>元素
它由Host接口定义.一个Engine元素可以包含多个元素.每个的元素定义了一个虚拟主机.它包含了一个或多个Web应用.
<\Context>元素
它由Context接口定义.是使用最频繁的元素.每个可以包含多个元素.每个web应用有唯一的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个
<Server port=”8005″ shutdown=”SHUTDOWN”> tomcat管理接口;负责监听关闭tomcat的请求
<Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” /> 监听组件;用于集群调试
<GlobalNamingResources> 全局命名资源,定义了用户认证
<Engine name=”Catalina” defaultHost=”localhost”> 引擎名及默认主机
<Realm className=”org.apache.catalina.realm.LockOutRealm”> 定义用户访问的密码;默认没定义用户密码,所以都能访问;
<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” …… /> 定义访问日志
3.配置apache通过mod_proxy模块与tomcat连接的详细过程
apache服务器:192.168.31.23
Tomcat1服务器:192.168.31.233
Tomcat2服务器:192.168.31.26
一、tomcat服务器先安装tomcat 、jdk并配置环境变量
tar -zxvf jdk-8u20-linux-x64.tar.gz -C /usr/local/ 解压jdk包
cd /usr/local
ln -sv jdk1.8.0_20 jdk
vim /etc/profile.d/java.sh 配置java环境变量
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile.d/java.sh 读取环境变量
tar -zxvf apache-tomcat-7.0.56.tar.gz -C /usr/local/
cd /usr/local
ln -sv apache-tomcat-7.0.56/ tomcat
vim /etc/profile.d/catalina.sh
CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
source /etc/profile.d/catalina.sh
二、启动tomcat,并访问默认网站
catalina.sh start
ss -tnl 看8080端口 是否起来
三、安装并配置apache反向代理服务
yum -y install httpd
vim /etc/httpd/conf/httpd.conf
# DocumentRoot “/var/www/html” 注释掉默认网页存放位置
在conf.d目录下新建虚拟主机
vim /etc/httpd/conf.d/http-proxy.conf
ProxyVia On
ProxyPreserveHost On
四、重启apache 访问测试成功
systemctl restart httpd.service
4.配置基于mod_jk的负载均衡
mod_jk是基于AJP协议的;通过mod_jk模块与tomcat连接;需要额外的软件包进行编译
一、apache服务器安装tomcat连接器 <apxs基于httpd-devel包>
yum -y install httpd-devel
tomcat-connectors-1.2.42-src.tar.gz
tar -zxvf tomcat-connectors-1.2.42-src.tar.gz
cd /root/tomcat-connectors-1.2.42-src/native
./configure –with-apxs=/usr/bin/apxs
make && make install
二、为了区分两个tomcat网页内容,修改tomcat的配置,并增加jvmRoute
tomcat1:
vim /usr/local/tomcat/conf/server.xml
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”TomcatA”>
<Host name=”localhost” appBase=”/data/webapps”
unpackWARs=”true” autoDeploy=”true”>
<Context path=”” docBase=”myapp” reloadable=”true” />
tomcat2:
vim /usr/local/tomcat/conf/server.xml
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”TomcatB”>
<Host name=”localhost” appBase=”/data/webapps”
unpackWARs=”true” autoDeploy=”true”>
<Context path=”” docBase=”myapp” reloadable=”true” />
分别在两个tomcat服务器上创建目录及index.jsp文件
mkdir /data/webapps/myapp/{classes,lib,WEB-INF,META-INF}
tomcat1:
vim /data/webapps/myapp/index.jsp
<%@ page language=”java” %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color=”red”>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>
tomcat2:
vim /data/webapps/myapp/index.jsp
<%@ page language=”java” %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color=”blue”>TomcatB </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>
三、启动tomcat并访问测试
省略………………………………..
四、配置mod_jk模块实现负载均衡
vim /etc/httpd/conf/httpd.conf
# DocumentRoot “/var/www/html” 注释
配置虚拟主机
vim /etc/httpd/conf.d/httpd-jk.conf
LoadModule jk_module modules/mod_jk.so 加载mod_jk模块
JkWorkersFile /etc/httpd/conf.d/workers.properties 配置文件位置
JkLogFile logs/mod_jk.log 日志
JkLogLevel debug 日志级别
JkMount /* lbcluster 负载均衡器名称
JkMount /jkstatus/ stat1 状态信息
编辑workers.properties配置文件
vim /etc/httpd/conf.d/workers.properties
worker.list = lbcluster,stat1
worker.TomcatA.type = ajp13
worker.TomcatA.port = 8009
worker.TomcatA.host = 192.168.31.233
worker.TomcatA.lbfactor = 1
worker.TomcatB.type = ajp13
worker.TomcatB.port = 8009
worker.TomcatB.host = 192.168.31.26
worker.TomcatB.lbfactor = 1
worker.lbcluster.type = lb
worker.lbcluster.sticky_session = 0
worker.lbcluster.balance_workers = TomcatA, TomcatB
worker.stat1.type = status
五、重启apache,并测试
httpd -t
systemctl reload httpd.service
5、配置tomcat集群,能够实现用户的session会话保持
DeltaManager实现
原理:是将会话信息同步给集群中其它节点,实现会话复制;
(1).修改tomcat1下的server.xml配置文件
在Engine组件内增加下面这一段
修改tomcat2下的server.xml
</Cluster>
(2).此外,所有启用集群功能的web应用程序,其web.xml中都须添加<distributable/>才能实现集群功能。如果某web应用程序没有自己的web.xml,也可以通过复制默认的web.xml至其WEB-INF目录中实现 Tomcat1 Tomcat2 都有添加
cp /usr/local/tomcat/conf/web.xml /data/webapps/myapp/WEB-INF/
vim /data/webapps/myapp/WEB-INF/web.xml
增加一行<distributable/>
(3).重启tomcat,并测试会话绑定
catalina.sh configtest
catalina.sh stop|start
原创文章,作者:N27_Vicent,如若转载,请注明出处:http://www.178linux.com/79772
评论列表(1条)
内容翔实,可以看的出有很认真在做,很赞。