tomcat多实例部署:
1、单机多实例
2、tomcat在不同的服务器上,通过共享网站目录来实现不同tomacat主机访问统一网站

Tomcat一机多实例
多实例运行不同的应用(类似虚拟主机)
多实例运行相同的应用(实现负载均衡、支持高并发处理、session问题)
会话保持(nginx均衡算法:ip——hash、sticky)
在修改端口时,需要改变的是8080 和 8005;8009(直接删掉或注释掉)

tomcat单机多实例配置:
环境准备:部署好了tomcat,保证网络畅通epel、base仓库可用、防火墙selinux关闭,在单机单实例的基础上部署

mkdir -pv /usr/local/tomcat/instance1/{conf,logs,temp,work} #8081
mkdir -pv /usr/loacl/tomcat/instance2/{conf,logs,temp,work} #8082
mkdir -pv /usr/local/tomcat/instance3/{conf,logs,temp,work} #8083
创建实例目录

webapps:
拷贝原来单实例的webapps到/下 (/usr/local/tomcat/webapps)拷贝到的路径可以自定义但是一定要和配置文件指定的相对应;

cp -r /usr/local/tomcat/webapps / #将默认发布网站页 拷贝到根下
/usr/local/tomcat/bin/shutdown.sh #关闭tomcat
拷贝原来的配置内容到新的实例上
cp- r /usr/local/tomcat/conf/ /usr/local/tomcat/instance1/conf/
cp- r /usr/local/tomcat/work/
/usr/local/tomcat/instance1/work/
cp- r /usr/local/tomcat/temp/ /usr/local/tomcat/instance1/temp/
cp- r /usr/local/tomcat/conf/
/usr/local/tomcat/instance2/conf/
cp- r /usr/local/tomcat/work/ /usr/local/tomcat/instance2/work/
cp- r /usr/local/tomcat/temp/
/usr/local/tomcat/instance2/temp/
cp- r /usr/local/tomcat/conf/ /usr/local/tomcat/instance3/conf/
cp- r /usr/local/tomcat/work/
/usr/local/tomcat/instance3/work/
cp- r /usr/local/tomcat/temp/* /usr/local/tomcat/instance3/temp/
配置实例server.xml (修改每个实例的server.xml)
vim /usr/local/tomcat/instance1/conf/server.xml
找到 这一行
修改为 #修改8005端口为8091
找到
修改为 connectionTimeout=”20000”
redirectPort=”8443” />
删除或注释8009的配置
找到 修改为 保存退出

制作启动和关闭实例的脚本:

vim /usr/local/tomcat/instance1/ins1.sh

!/bin/bash

. /etc/init.d/functions
export CATALINA_BASE=”/usr/local/tomcat/instance1”
export CATALINA_HOME=”/usr/local/tomcat”
case $1 in
start)
$CATALINA_HOME/bin/startup.sh
;;
stop)
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
$CATALINA_HOME/bin/shutdown.sh
sleep 5
$CATALINA_HOME/bin/startup.sh
;;
esac
保存退出
chmod a+x /usr/local/tomcat/instance1/ins1.sh #给予执行权限

vim /usr/local/tomcat/instance2/ins2.sh

!/bin/bash

. /etc/init.d/functions
export CATALINA_BASE=”/usr/local/tomcat/instance2”
export CATALINA_HOME=”/usr/local/tomcat”
case $1 in
start)
$CATALINA_HOME/bin/startup.sh
;;
stop)
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
$CATALINA_HOME/bin/shutdown.sh
sleep 5
$CATALINA_HOME/bin/startup.sh
;;
esac
保存退出
chmod a+x /usr/local/tomcat/instance2/ins2.sh #给予执行权限

vim /usr/local/tomcat/instance3/ins3.sh

!/bin/bash

. /etc/init.d/functions
export CATALINA_BASE=”/usr/local/tomcat/instance3”
export CATALINA_HOME=”/usr/local/tomcat”
case $1 in
start)
$CATALINA_HOME/bin/startup.sh
;;
stop)
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
$CATALINA_HOME/bin/shutdown.sh
sleep 5
$CATALINA_HOME/bin/startup.sh
;;
esac
保存退出
chmod a+x /usr/local/tomcat/instance3/ins3.sh #给予执行权限

启动测试:

/usr/local/tomcat/instance1/ins1.sh start
/usr/local/tomcat/instance2/ins2.sh start
/usr/local/tomcat/instance3/ins3.sh start
ss -anltp | grep :80 #查看启动情况

访问测试:
浏览器地址栏输入:
本机ip地址:8081
本机ip地址:8082
本机ip地址:8083
如能正常访问那么说明我们的单机多实例部署成功了

Tomcat负载均衡:
环境准备:额外准备一台服务器 #负载均衡 反向代理
保证代理机的网络畅通,部署了nginx,防火墙以及selinux关闭、base、epel源可用
如果没下载nginx则进行下方操作进行nginx下载:

vim /etc/yum.repos.d/nginx.repo #配置nginx的yum仓库
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/![](https://g.yuque.com/gr/latex?releasever%2F#card=math&code=releasever%2F)basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/![](https://g.yuque.com/gr/latex?releasever%2F#card=math&code=releasever%2F)basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

保存退出

yum clean all
yum makecache
yum -y install nginx
systemctl start nginx

本次实验以yum安装的nginx为例(请确保环境一致):
nginx配置:

vim /etc/nginx/nginx.conf #编辑主配置文件
http {
upstream tomcat {
server tomcat实例机ip地址或域名:8081 weight=1 max_fails=2 fail_timeout=2;(地址及端口后方参数可加可不加,主要看有无需求)
server tomcat实例机ip地址或域名:8082 weight=1 max_fails=2 fail_timeout=2;
server tomcat实例机ip地址或域名:8083 weight=1 max_fails=2 fail_timeout=2;
}
}
在主配置文件内的http块中添加以上内容(负载均衡地址池)
保存退出

vim /etc/nginx/conf.d/proxy.conf #配置代理服务在nginx的子配置目录下
server {
listen 80; #设置端口注意不要与子配置文件内的server块监听端口冲突,可以去/etc/nginx/conf.d/default.conf内将server块下的listen 80;改为listen 81;
server_name localhost;
location / {
proxy_pass http://tomcat; #proxy_pass后跟的是我们的负载均衡地址池指定的地址池名
(以下参数可加可不加,主要看个人或企业需求)
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
}
}
保存退出
nginx -t #查看添加或修改的内容是否有格式错误
nginx -s reload #重新加载nginx 使刚刚添加或修改的内容生效

使用浏览器访问测试
浏览器地址栏输入:
代理机IP地址
页面内容会根据不同的权重等级进行轮询处理访问请求