在一台服务器上有多台Tomcat;就算是多实例
安装telnet服务,可以用来测试端口通信是否正常 yum -y install telnettelnet 192.168.220.112 80 tomcat的日志文件 cd /usr/local/tomcat/logsvim catalina.out Tomcat多实例部署: 1.安装好 jdk cd /optrpm -ivh jdk-8u201-linux-x64.rpm java -version 2.安装 tomcat cd /opttar -xf apache-tomcat-9.0.16.tar.gzmkdir /usr/local/tomcatmv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2 3.配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh#写入下面内容#tomcat1export CATALINA_HOME1=/usr/local/tomcat/tomcat1export CATALINA_BASE1=/usr/local/tomcat/tomcat1export TOMCAT_HOME1=/usr/local/tomcat/tomcat1#tomcat2export CATALINA_HOME2=/usr/local/tomcat/tomcat2export CATALINA_BASE2=/usr/local/tomcat/tomcat2export TOMCAT_HOME2=/usr/local/tomcat/tomcat2#刷新配置文件source /etc/profile.d/tomcat.sh 4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/server.xml#22行,修改Server prot,默认为8005 -> 修改为8006<Server port="8006" shutdown="SHUTDOWN">#69行,修改Connector port,HTTP/1.1 默认为8080 -> 修改为8081<Connector port="8081" protocol="HTTP/1.1"#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />---------------------------------------------------------------------------------------------------------- 第一个连接器默认监听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等前端服务器集成,以实现负载均衡、反向代理等功能 ----------------------------------------------------------------------------------------------------------
5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量;分别把启动文件指向tomcat1和tomcat2 vim /usr/local/tomcat/tomcat1/bin/startup.sh ##--G--在页尾添加以下内容export CATALINA_BASE=$CATALINA_BASE1export CATALINA_HOME=$CATALINA_HOME1export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat/tomcat1/bin/shutdown.sh##--G--在页尾添加以下内容export CATALINA_BASE=$CATALINA_BASE1export CATALINA_HOME=$CATALINA_HOME1export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat/tomcat2/bin/startup.sh ##--G--在页尾添加以下内容export CATALINA_BASE=$CATALINA_BASE2export CATALINA_HOME=$CATALINA_HOME2export TOMCAT_HOME=$TOMCAT_HOME2vim /usr/local/tomcat/tomcat2/bin/shutdown.sh##--G--在页尾添加以下内容export CATALINA_BASE=$CATALINA_BASE2export CATALINA_HOME=$CATALINA_HOME2export TOMCAT_HOME=$TOMCAT_HOME2 6.启动各 tomcat 中的 /bin/startup.sh /usr/local/tomcat/tomcat1/bin/shutdown.sh /usr/local/tomcat/tomcat2/bin/startup.sh /usr/local/tomcat/tomcat1/bin/shutdown.sh /usr/local/tomcat/tomcat2/bin/startup.sh 7.浏览器访问测试 http://192.168.220.112:8080http://192.168.220.112:8081 nginx+tomcat实现动静分离动静:动态页面和静态页面
分离:分别可以对静态页面和动态页面发起不同的请求,会有不同的响应结果
nginx通过反向代理实现负载均衡——tomcat是后端服务器——web静态由nginx实现——静态请求会分配给nginx——动态页面则经有nginx转发分配给后端的tomcat
tomcat的并发能力比较弱只有nginx的1/6,所以需要由负载均衡对请求进行合理的分配
Nginx+Tomcat负载均衡的组合的优点Nginx 静态处理优势:Nginx 处理静态页面的效率远高于Tomcat的处理能力,Nginx处理静态资源的能力是Tomcat 处理的6倍
动静分离原理:服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx 提供服务,动态资源由Nginx转发至后端。
Nginx+Tomcat负载均衡 【安装 Nginx 服务】Nginx服务装在另一台linux上,不要和tomcat装在同一台机子上
systemctl stop firewalldsystemctl disable firewalldsetenforce 01、安装依赖包yum -y install pcre-devel zlib-devel gcc gcc-c++ make2、创建运行用户useradd -M -s /sbin/nologin nginx3、编译安装cd /opttar zxvf nginx-1.22.0.tar.gz -C /opt/cd nginx-1.22.0/./configure --with-stream./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_modulemake -j 4 && make install4、优化路径ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/5、添加 Nginx 系统服务vim /lib/systemd/system/nginx.service[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetchmod 777 /lib/systemd/system/nginx.servicesystemctl start nginx.servicesystemctl enable nginx.service —— cd /usr/local/nginx/conf/#先备份nginx.conf文件cp nginx.conf nginx.conf.20230811.bakvim nginx.conf在--28行-- #tcp_nopush下插入upstream ky30 {server 192.168.220.112:8080 weight=1;server 192.168.220.112:8081 weight=1;server 192.168.220.114:8080 weight=2;}然后到--47行--#access_log下插入location ~ .*\.jsp$ {proxy_pass http://ky30;proxy_set_header HOST $host;#将真实的IP地址传给后端服务器proxy_set_header X-Real-IP $remote_addr;#记录代理服务器地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location ~ .*\.(gif|jpg|png)$ {root html;index index.html index.htm;} 检查配置文件并重启 nginx -tsystemctl restart nginx.service 1号机 创建网页文件 Tomcat1的配置mkdir /usr/local/tomcat1/webapps/testvim /usr/local/tomcat1/webapps/test/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 1,http://www.test1.com");%></body></html>Tomcat2的配置mkdir /usr/local/tomcat2/webapps/testvim /usr/local/tomcat2/webapps/test/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test2 page</title> </head><body><% out.println("动态页面 2,http://www.test2.com");%></body></html> 修改server.xml配置文件 cd /usr/local/tomcat1/conf/改之前先备份一下cp server.xml server.xml.20230811.bakvim server.xml#在原有的<host>标签下新添下面的内容<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat1/webapps/test" path="" reloadable="true" /></Host>cd /usr/local/tomcat2/conf/改之前先备份一下cp server.xml server.xml.20230811.bakvim server.xml#在原有的<host>标签下新添下面的内容<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat2/webapps/test" path="" reloadable="true" /></Host> 重启tomcat服务 /usr/local/tomcat1/bin/shutdown.sh/usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/shutdown.sh/usr/local/tomcat2/bin/startup.sh 打开另一台虚拟机;安装好tomcat服务 访问一下1号机的tomcat,看能否连得上——显示网页代码curl 192.168.220.112:8080curl 192.168.220.112:8081或者打开浏览器访问192.168.220.112:8080192.168.220.112:8081 mkdir /usr/local/tomcat/webapps/testvim index.jspmkdir /usr/local/tomcat/webapps/testvim /usr/local/tomcat/webapps/test/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test3 page</title> </head><body><% out.println("动态页面 3,http://www.test3.com");%></body></html> 修改配置文件 cd /usr/local/tomcat/conf/cp server.xml server.xml.20230811.bakvim server.xml在原有的<host>标签下添加<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> 重启tomcat服务 /usr/local/tomcat/bin/shutdown.sh/usr/local/tomcat/bin/startup.sh 回到装有Nginx服务的机子 cd /usr/local/nginx/html/vim index.html<html><head><title>Nginx test page</title></head><body><h1>this is Nginx static test !</h2><img src="1.jpg"/></body></html>systemctl stop firewalldsetenforce 0将图片文件添加到/usr/local/nginx/html/目录下,注意文件名要一致打开浏览器访问Nginx服务所在机子的IP地址192.168.220.102加上/index.jsp访问,刷新页面,页面内容也随之刷新192.168.220.102/index.jsp