多实例部署
在一台服务器上有多个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
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
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
tomcat主目录的路径,包含所有tomcat的文件
export CATALINA BASE1=/usr/local/tomcat/tomcat1
指定tomcat实例目录
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
tomcat主目录的路径,包含所有tomcat的文件
这三条在环境变量中声明,配置成全局变量,方便后面传参/赋值
source /etc/profile.d/tomcat.sh
进入控制tomcat运行的文件,把服务shutdown一下
基于Tomcat主目录,强行复制一个相同的
vim /etc/profile.d/tomcat.sh
4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
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等前端服务器集成,以实现负载均衡、反向代理等功能
引入一个很好用的功能,是第三方的,需要安装
telnet 测试服务器ip地址是否能正常通信和测试端口通信是否正常(工作当中用得到,面试会问)
通过什么方式检测出来80端口不通?telnet一测就知道
例:telnet 192.168.233.61 80
为什么能ping通却不能访问?因为服务器是基于端口通信的,所以也要检查端口
端口可能不存在 端口没有打开
telnet 192.168.233.61 80试试
出现Escape character is 就表示通信正常,已经建立了通信
去tomcat2,改tomcat2的端口,因为tomcat1已经占用8009,8080等端口。复制过来的tomcat2端口一样,所以得改
改之前先把配置文件复制一下。注:改主文件,备份文件只是预防你改错了好还原回去
把shutdown端口改为8006
http通信端口8080也改为8081
和web服务器通信的端口8009改为8010
注:端口可以改为任意的数字,只要端口不被占用都可以,但是端口有范围65535以内
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
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
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
步骤详解:
修改启动文件
先改tomcat1的
vim startup.sh
在尾行添加上一步设置的全局变量
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=_TOMCAT_HOME1
vim shutdown.sh
配置这两个的目的就是为了做系统服务控制,让他能够识别到我启动是谁,关的是谁
配置完tomcat1的接着配置一下tomcat2的
同样的在最后一行,把tomcat2的添加一下
vim startup.sh 同样配置一下startup
这样1和2的多实例就都配置好了
启动一下服务
6.浏览器访问测试
http://192.168.233.71:8080
http://192.168.233.71:8081
看一下页面是否能正常访问。都是基于71这台服务器,分别看一下8080和8081端口
nginx+tomcat实现动静分离
静:静态页面
动: 动态页面
分别可以对静态页面和动态页面发起不同的请求,会有不同的响应结果。
nginx反向代理------负载均衡------tomcat是后端服务器------web静态nginx------静态请求----->nginx
------动态页面------tomcat
tomcat并发量能力弱,只有nginx的六分之一,所以要有负载均衡进行合理的调用分配。
示例图:
开始正式操作
准备好了4台服务器
test1 192.168.233.10 作为客户端
nginx1 61 作为web服务器
tomcat 71 多实例
tomcat 72 单独后端web服务器,用来处理动态请求
先配置nginx1
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
#gzip on;
#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
upstream tomcat_server {
server 192.168.233.71:8080 weight=1;
server 192.168.233.71:8081 weight=1;
}
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
location ~ .*\.jsp$ {
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处理静态图片请求
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html;
expires 10d;
}
location / {
root html;
index index.html index.htm;
}
......
}
......
}
location ~ .*\.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
备份配置文件
编辑配置文件 vim nginx.conf
在http模块当中配置
写上后端要调用的服务器,配置权重,多实例权重分配小一点,单实例权重稍高一点,让其访问量偏大一点
server里面配置处理动态请求的location
检查语法,没有问题,nginx配置完成
配置tomcat1 实例1
动态页面
建立一个动态页面访问内容,访问后端服务器,就会访问到这个页面
配置多实例中的tomcat2
再回到tomcat1
把默认配置的host删除掉
再去tomcat2,一样把server.vml配置一下
多实例tomcat配置完成,去验证一下单实例服务是否正常
正常,开始配置
单实例,只需部署一下访问页面即可
vim index.jsp配置
vim server.xml 一样把原来的host删除,再添加一个Host
注意路径指向要一直,否则获取不到index文件
从tomcat1开始,重启服务
tomcat2
看看是否能够访问到服务
因为路径错误,所以访问不到
/usr/local/tomcat/tomcat2不存在,改为/usr/local/tomcat2
改tomcat1的server文件
重启
这样就可以了
把静态页面请求也配置一下
把图片拖进来
请求一下静态页面
请求一下动态页面:
这样就完成了动静分离
综合:
四层转发流量+七层后端代理+动静分离
架构如图:
四层转发流量+七层后端代理
环境:
192.168.233.61 nginx四层代理
192.168.233.62 nginx七层代理
192.168.233.63 nginx七层代理
192.168.233.71 tomcat1多实例
192.168.233.72 tomcat2单实例
systemctl stop firewalld
setenforce 0
192.1682.233.61 nginx四层代理:
vim /usr/local/nginx/conf/nginx.conf
pid /usr/local/nginx/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream test {
server 192.168.233.62:80;
server 192.168.233.63:80;
}
server {
listen 8080;
proxy_pass test;
}
}
nginx七层代理62和63:
upstream ky30 {
server 192.168.233.71:8080 weight=1;
server 192.168.233.71:8081 weight=1;
server 192.168.233.72:8080 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ .*\.jsp$ {
proxy_pass http://ky30; #配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
proxy_set_header HOST $host; #设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),
默认HOST的值为proxy_pass指令设置的主机名。
proxy_set_header X-Real-IP $remote_addr; #把$remote_addr赋值给X-Real-IP,来获取源IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html;
expires 10d;
}
配置相同
192.168.233.71 tomcat1多实例:
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
#配置多实例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.sh
修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
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
修改各 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
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
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
配置tomcat01的测试页面
mkdir /usr/local/tomcat/tomcat1/webapps/test
vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>tomcat01</title>
</head>
<body>
<% out.println("tomcat01 running");%>
</body>
</html>
更进一步完整架构后面再说文章来源:https://www.toymoban.com/news/detail-643029.html
文章来源地址https://www.toymoban.com/news/detail-643029.html
到了这里,关于8月11日上课内容 nginx的多实例和动静分离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!