Tomcat及其负载均衡!
Posted handsomeboy-东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat及其负载均衡!相关的知识,希望对你有一定的参考价值。
Tomcat部署
Tomcat概述
Tomcat简介
- Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
- 它是免费的、开放源代码的Web应用服务器,深受Java爱好者的喜爱,并得到部分软件开发商的认可
- 目前比较流行的Web应用服务器
- Tomcat通常作为一个Servlet和JSP容器,单独运行在后端
Tomcat核心组件
- Web服务器:提供Web页面功能
- servlet容器:处理后端业务,内有catalina脚本来帮助处理Servlet代码
- JSP容器:提供前端业务,将JSP动态网页(index.jsp)翻译成Servlet代码
Tomcat部署
Tomcat主要目录
- bin:主要存放一些脚本文件,常用的 有catalina.sh、startup.sh、shutdown.sh
- conf:存放Tomcat配置文件,其中server.xml为主配置文件
- lib:存放Tomcat服务器的jar包
- logs:存放Tomcat日志文件
- temp:存放Tomcat运行时产生的文件
- webapps:存放项目资源的目录
- work:Tomcat工作目录,一般在清除Tomcat缓存时使用
[root@server opt]# rpm -ivh jdk-8u201-linux-x64.rpm #安装JDK,JDK为Tomcat运行必要的工具
[root@server opt]# vim /etc/profile.d/java.sh #设置JDK的环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bim:$PATH
[root@server opt]# source /etc/profile.d/java.sh
[root@server opt]# tar zxf apache-tomcat-9.0.16.tar.gz
[root@server opt]# mv apache-tomcat-9.0.16 /usr/local/tomcat
[root@server tomcat]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@server tomcat]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
[root@server tomcat]# startup.sh #开启Tomcat
[root@server tomcat]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 8808/java
优化Tomcat启动速度
修改JDK参数进行优化,以免第一次启动tomcat后每次启动tomcat速度会很慢
[root@server ~]# vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
虚拟主机配置
- 当一台服务器上运行多个Tomcat时,可以使用Tomcat虚拟主机,如新增两个域名www.whd.com和www.test.com,通过访问两个域名可以访问倒不同的项目内容
[root@server ~]# mkdir /usr/local/tomcat/webapps/whd
[root@server ~]# mkdir /usr/local/tomcat/webapps/test
[root@server ~]# echo "this is whd\\!" > /usr/local/tomcat/webapps/whd/index.jsp
[root@server ~]# echo "this is test\\!" > /usr/local/tomcat/webapps/test/index.jsp
[root@server ~]# echo "192.168.118.50 www.whd.com www.test.com " >> /etc/hosts
#将ip与域名添加本地映射关系
[root@server ~]# vim /usr/local/tomcat/conf/server.xml #修改配置文件
注释:
- Host name:主机名
- appBase:Tomcat程序工作目录,路径为/usr/local/tomcat/webapps
- unpackWARs:Tomcat在webapps文件夹中发现war文件时,是否将其解压
- autoDeploy:设置为true,则web.XML发生变化时,Tomcat自动重新部署程序,实现这个功能必须允许后台处理
- xmlValidation:是否开启对XML文件的验证
- xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验
- docBace:WEB应用的目录(本地路径)
- path:设置访问的URI为WEB应用的根目录(URL路径),“”表示默认,加载系统中自带的类(class文件)
- reloadable:是否在陈旭有改动时重新载入
重启Tomcat
[root@server ~]# shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@server ~]# startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
在本地访问网页
Tomcat优化的主要参数
- maxTHreads:表示Tomcat可创建的最大的线程数,默认为200
- minSpareThreads:Tomcat最小空闲线程数,表示即使没有人使用也开这么多空线程等待,默认是10
- maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程,默认值是-1(表示无限制,一般不用指定)
- URIEncoding:指定Tomcat容器的URL编码格式
- connnectionTimeout:网络连接超时,以毫秒为单位,默认20000
- enableLookups:是否反查域名
- disableUploadTimeout:上传时是否使用超时机制,应设置为true
- connectionUploadTimeout:上传超时时间
- addeptCount:指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100个
- compression:是否对响应的数据进行gzip压缩,压缩可以有效减少页面的大小,节省带宽
- compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启压缩默认为2048
- compressabldMimeType:指定对哪些类型的文件进行数据压缩
- noCompressionUserAgents=“gozilla,traviata” :对于一下的浏览器,不启动压缩
[root@server ~]# vim /usr/local/tomcat/conf/server.xml #修改配置文件,添加优化
nginx+Tomcat负载均衡群集
设备准备,两台Tomcat和一台Nginx
server1:192.168.118.50
[root@server1 ~]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 40194/java
[root@server1 ~]# mkdir /usr/local/tomcat/webapps/whd #创建一个项目whd
[root@server1 ~]# vim /usr/local/tomcat/webapps/whd/index.jsp #配置动态页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP whd1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.whd1.com");%>
</body>
</html>
[root@server1 ~]# vim /usr/local/tomcat/conf/server.xml #添加虚拟主机配置
[root@server1 ~]# shutdown.sh
[root@server1 ~]# startup.sh
[root@server1 ~]# curl 192.168.118.50:8080/index.jsp #测试配置是否成功
<html>
<head>
<title>JSP whd1 page</title>
</head>
<body>
动态页面 1,http://www.whd1.com
</body>
</html>
server2:192.168.118.100
[root@server2 opt]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 78633/java
[root@server1 ~]# mkdir /usr/local/tomcat/webapps/whd #创建一个项目whd
[root@server1 ~]# vim /usr/local/tomcat/webapps/whd/index.jsp #配置动态页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP whd2 page</title> #注意这里改为whd2
</head>
<body>
<% out.println("动态页面 1,http://www.whd2.com");%>
</body>
</html>
[root@server1 ~]# vim /usr/local/tomcat/conf/server.xml #添加虚拟主机配置
[root@server2 conf]# shutdown.sh
[root@server2 conf]# startup.sh
[root@server2 conf]# curl 192.168.118.100:8080/index.jsp
<html>
<head>
<title>JSP whd2 page</title>
</head>
<body>
动态页面 1,http://www.whd2.com
</body>
</html>
nginx:192.168.118.200
[root@nginx nginx-1.15.9]# netstat -antp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26510/nginx: master
[root@nginx ~]# echo "<html><body><h1>this is static</h1></body></html>" > /usr/local/nginx/html/index.html
#### 设置静态页面
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf #修改配置文件
在win10上访问nginx服务器IP地址测试
再访问index.jsp,不断刷新,会发现会在动态页面whd1和whd2之间不断刷新
总结
- Tomcat服务器是一个免费开源的Web应用服务器,是轻量级服务器,常被用来开发和调试JSP程序
- 安装Tomcat前必须安装好JDK,server.xml为Tomcat的主要配置文件
- 可以将两个或多个Tomcat server放到Nginx的upstream中组成一个负载均衡集群,并设置weight值来分别对Tomcat server进行权重的设置
以上是关于Tomcat及其负载均衡!的主要内容,如果未能解决你的问题,请参考以下文章