-
首先我说一下为什么为什么要实现tomcat的单机多实例,在实际操作中,如果一台服务器只运行一台tomcat的服务,资源得不到最大的利用,所以单机多实例的创建,服务器的资源利用率提升了。
-
执行下面的脚本,可以结合ansible ,提前将jdk环境和tomcat压缩包分发过去,因为jdk的文件较大,可以提前下载好,还有一个原因就是要去外国网站下载,效率不高,提前下载好,就可以了。
#!/bin/bash
#解压压缩包 先判断是否存在
install_tomcat() {
ls -la /opt/tomcat1/ | grep -w 'apache-tomcat-8.5.35'
if [ $? -eq 0 ]; then
echo "已存在"
else
tar -zxf apache-tomcat-8.5.35.tar.gz -C /opt/tomcat1/
fi
}
#修改配置文件
tomcat2_update() {
sed -i '22c <Server port="8006" shutdown="SHUTDOWN">' /opt/tomcat2/apache-tomcat-8.5.35/conf/server.xml
sed -i '69c <Connector port="8081" protocol="HTTP/1.1"' /opt/tomcat2/apache-tomcat-8.5.35/conf/server.xml
sed -i '116c <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />' /opt/tomcat2/apache-tomcat-8.5.35/conf/server.xml
}
tomcat3_update() {
sed -i '22c <Server port="8007" shutdown="SHUTDOWN">' /opt/tomcat3/apache-tomcat-8.5.35/conf/server.xml
sed -i '69c <Connector port="8082" protocol="HTTP/1.1"' /opt/tomcat3/apache-tomcat-8.5.35/conf/server.xml
sed -i '116c <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />' /opt/tomcat3/apache-tomcat-8.5.35/conf/server.xml
}
#安装java环境
rpm -ivh jdk-8u131-linux-x64_.rpm
#先判断安装包是否存在
ls -la /root/ | grep -w 'apache-tomcat-8.5.35.tar.gz'
if [ $? -eq 0 ]; then
echo "压缩包已存在"
else
echo "压缩包不存在 请确保ansible已分发tomcat的压缩包"
break
fi
#解压缩包 首先创建一个可以存放解压出来的目录
ls -la /opt/ | grep -w 'tomcat1'
if [ $? -eq 0 ]; then
echo "此文件夹已存在"
#开始判断解压出来的文件是否存在
install_tomcat
else
mkdir /opt/tomcat1
install_tomcat
fi
#单机多实例
ls -la /opt | grep -w 'tomcat2'
if [ $? -eq 0 ]; then
echo "文件已存在"
tomcat2_update
else
cd /opt/ && cp -rf tomcat1 tomcat2
tomcat2_update
fi
ls -la /opt | grep -w 'tomcat3'
if [ $? -eq 0 ]; then
echo "文件已存在"
tomcat3_update
else
cd /opt/ && cp -rf tomcat1 tomcat3
echo "已创建"
tomcat3_update
fi
yum -y install supervisor
cat >> /etc/supervisord.d/tomcat.ini<<eof
[program:tomcat2]
command=/opt/tomcat2/apache-tomcat-8.5.35/bin/catalina.sh run
[program:tomcat3]
command=/opt/tomcat3/apache-tomcat-8.5.35/bin/catalina.sh run
[program:tomcat1]
command=/opt/tomcat1/apache-tomcat-8.5.35/bin/catalina.sh run
eof
systemctl start supervisord
#判断是否可以访问页面
IP=`/sbin/ifconfig -a | awk '{print $2}'| sed -n '2p'` #首先获取IP地址
curl_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://${IP}:8080`
if [ $curl_code -eq 200 ];then
echo "可以正常访问"
else
echo "页面不可以正常访问"
fi
这里我们用到了一个软件supervisor,supervisor是一个守护进程工具,可以方便监听、启动、停止、重启一个多多个进程,用supervisor管理的进程,当其中一个进程被意外杀死,supervisor监听到进程死后,会自动将他重新拉起,很方便做的进程自动回复功能,不再需要自己写shell脚本来控制。
如图所示,我们实现单机多实例后的监听到的端口状态