多实例
多实例就是在一台服务器上有多个tomcat的服务(核心是改端口)
实验:多实例
安装步骤
1.安装好 jdk
2.安装 tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2保留权限强制复制,把tomcat1复制为tomcat2
3.配置 tomcat 环境变量
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2
source /etc/profile.d/tomcat.sh4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
修改前先备份,在/usr/local/tomcat2/conf里备份
cp server.xml server.xml.bak.20230811
vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN"> #22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1" #69行,修改Connector port,HTTP/1.1 默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010----------------------------------------------------------------------------------------------------------
第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
第二个连接器默认监听8009端口,负责和其他的HTTP服务器建立连接。
在把Tomcat与其他HTTP服务器集成时,需要用到这个连接器。第三个连接器
port="8010":指定AJP连接器监听的端口号。在这个示例中,AJP连接器监听在8010端口上。protocol="AJP/1.3":指定连接器所使用的协议。这里设置为AJP/1.3,表示使用AJP协议的版本1.3。
redirectPort="8443":指定重定向端口。当AJP连接器接收到HTTP请求时,如果请求是通过HTTPS(加密)访问的,
则会将请求重定向到8443端口。AJP连接器用于将静态资源和动态请求从前端Web服务器(如Apache HTTP Server)转发到Tomcat服务器。
这样可以将Tomcat服务器隐藏在防火墙之后,提高安全性,同时提供更高的性能,特别是在处理动态请求时。
常见的AJP连接器配置是为了将Tomcat与Apache HTTP Server或Nginx等前端服务器集成,以实现负载均衡、反向代理等功能几个端口搞明白:8080—连接客户端,接收http请求 8009—连接服务端
----------------------------------------------------------------------------------------------------------5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
vim /usr/local/tomcat/tomcat1/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1#分别把启动文件指向tomcat1和tomcat2,与启动文件做个区分
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1#startup和shutdown都要配置一下
vim /usr/local/tomcat/tomcat2/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------##添加以下内容
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------##添加以下内容
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2#1,2的多实例已经配置好了
6.启动各 tomcat 中的 /bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.shnetstat -natp | grep java
7.浏览器访问测试
http://192.168.88.10:8080
http://192.168.88.10:8081
详解
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
tomcat主目录的路径,包含所有tomcat的文件
export CATALINA_BASE1=/usr/local/tomcat/tomcat1指定tomcat实例目录
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1tomcat主目录的路径,包含所有tomcat的文件
后面会把这些赋值的变量作为参数赋值给启动文件,这三条必须先在环境变量中声明配置成全局变量,方便后面赋值。
telnet工具
用来测试端口通信是否正常,服务本身不自带,需要用yum的方式进行安装
yum -y install telnet
telnet 192.168.88.10 80
日志位置
catalina.out tomcat的主日志位置
/usr/local/tomcat/logs
nginx+tomcat实现动静分离
动:动态页面
静:静态页面
分离:分别可以对静态页面和动态页面发起不同的请求,会有不同的影响结果
nginx通过反向代理实现负载均衡——tomcat是后端服务器——web静态由nginx来做→静态请求→nginx——动态页面→tomcat
tomcat处理并发量能力弱,只有nginx的六分之一,所以要有负载均衡进行合理的调用分配
tomcat1.1和tomcat1.2为部署在同一个服务器上的多实例
实验
实验前准备,test1作为客户端,tomcat1服务器上已经配置好了多实例1.1 1.2 和tomcat2分别作为后端web服务器用来处理动态请求 nginx1作为web服务器
Nginx实现负载均衡的主要配置项 :
upstream 服务池名 { }
作用:配置后端服务器池,以提供响应数据proxy_pass http:// 服务池名
作用:配置将访问请求转发给后端服务器池的服务器处理Nginx+Tomcat负载均衡的组合的优点
Nginx 静态处理优势:Nginx 处理静态页面的效率远高于Tomcat的处理能力,Nginx处理静态资源的能力是Tomcat 处理的6倍。动静分离原理:服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx 提供服务,动态资源由Nginx转发至后端。
Nginx+Tomcat负载均衡
第一步,先做个备份
第二步,修改配置文件
在http模块里面配,因为转发的是http请求
配置七层反向代理upstream ky30为调用名称,方便后面调用
server 192.168.88.10:8080 server 192.168.88.10:8081做为后端要调用的服务器
这两个tomcat服务器为是部署在一台服务器上的多实例
第三台tomcat服务器192.1668.88.20:8080 因为前两个为多实例部署所以权重给小一点
配置处理动态请求的location#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
#设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来自反向代理服务器,如果后端有防攻击策略的话,机器就被封了。
proxy_set_header HOST $host;
#把$remote_addr赋值给X-Real-IP,来获取源IP
proxy_set_header X-Real-IP $remote_addr;
#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#正则匹配,配置Nginx处理静态图片请求 .*为所有 \.就表示点,意思为所有以gif,jpg结尾的文件都响应到这个location root html指定访问的目录
检查一下有没有语法错误
下面开始配tomcat,先从多实例开始,配置tomcat1
访问tomcat1后端服务器就会访问test1
配置tomcat2
多实例的两个服务器页面搞完了
下面还要在hosts文件里面把这两台主机声明出来,从tomcat1开始
改配置文件前先做个备份
先把默认配置的hosts删除
加入这段代码,声明位置,只要访问192.168.88.10就是访问/usr/local/tomcat/tomcat1/weapps 里面的 test
下面配置tomcat2
删除原有的hosts添加这段
下面配置单台的tomcat3
修改配置文件,部署动态页面
改一下hosts
删除原有的hosts并添加
修改完三个tomcat的配置文件后还需要把三个tomcat服务器重启一下
配置静态页面,在nginx服务器中配置
在配置文件中删除全部内容并添加
把图片lt.jpg拖入html下面
现在静态页面,动态页面都有了
访问一下192.168.88.30,看一下静态页面是否可以正常访问
用客户端(也就是在浏览器上)访问一下,192.168.88.30/index.jsp,看动态页面是否可以正常访问
动态页面也可以实现