自动化测试:k8s环境下,通过检测文件是否存在来自动启停tomcatapp的方法_20160316_七侠镇莫尛貝
来源:互联网 发布:微信小程序php实例 编辑:程序博客网 时间:2024/04/29 19:14
通常情况下,容器里的tomcatapp不需要经常启动停止。但在做jenkins自动化测试时,为了更新war包,修改配置什么的,少不了要频繁重启tomcat。tomcat 本身支持远程部署war包,但修改配置他就没辙了。
重启tomcat的方法:
1. jenkins 通过ssh插件,登录到容器,执行重启命令。 这需要为容器配置ssh,配置k8s暴露容器端口,麻烦,也不太安全。
2.在容器里再开一个tomcat,写一个jsp,去执行shell命令,jenkins通过wget 这个url 来启停另一个tomcat。这需要多耗费一份运行tomcat的资源,而且也要配置k8s暴露容器端口,也不好。
jsp执行shell命令示例,还可以传参数:
remotectl.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%
Runtime run = Runtime.getRuntime();
//new日期对象
Date date = new Date();
//转换提日期输出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
String db_username = request.getParameter("db_username");
if(null != db_username){
Process pro = run.exec("/home/mxb/rc.sh " + db_username);
out.println(dateFormat.format(date) + " 正在执行:/home/mxb/rc.sh " + db_username +" ...");
System.out.println(dateFormat.format(date) + " 正在执行:/home/mxb/rc.sh " + db_username + " ...") ;
}else{
out.println(dateFormat.format(date) + "请指定db_username参数。这是系统要使用的数据库表空间和用户名称,必须为大写。 ");
}
%>
3.写一个脚本monitor.sh,让容器一直运行之,循环检测某个文件是否存在(这个文件可以通过volumeMounts挂载到jenkins和tomcatapp容器里 ),来实现jenkins可控的启停。
这个脚本还可以保持容器一直运行。
rc-myapp.yaml:
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-myapp
spec:
replicas: 1
selector:
name: myapp
template:
metadata:
labels:
name: myapp
spec:
containers:
- name: myapp
image: kimqcn/u14.04
# command: ["/usr/sbin/sshd","-D"]
# command: ["/tomcat_rc_9999/bin/catalina.sh","run"]
command: ["/tomcat/monitor.sh"]
ports:
# - containerPort: 22
- containerPort: 8080
# - containerPort: 9999
monitor.sh: 在启停tomcat前,先检测一下8080端口,避免重复启动,防止做无用功。
#!/bin/bash
# 本脚本在Docker容器启动时运行。
# 脚本功能:循环(间隔5秒)检测/tomcat/目录下是否存在on文件。
# 如果存在on文件,则启动tomat: /tomcat/bin/startup.sh
# 如果不存在on文件,则停止tomcat: /tomcat/bin/stop_tomcat.sh
# 作者: mxb
# Ver: 2016-03-02
Flag_File=/tomcat/on
while true;do
if [ ! -f "$Flag_File" ]; then
echo "`date '+%Y%m%d %H%M%S'` Flag_File检测...不存在! 停止tomcat!" > /dev/null
netstat -lnp|grep 8080 > /dev/null
if [ $? -eq 0 ];then
echo "`date '+%Y%m%d %H%M%S'` Flag_File检测...不存在! 停止tomcat!"
/tomcat/bin/stop_tomcat.sh
echo ""
else
echo "tomcat 未启动..,不做操作!" > /dev/null
fi
#echo ""
sleep 5
continue
else
# echo "`date '+%Y%m%d %H%M%S'` Flag_File检测...存在! 启动tomcat!"
netstat -lnp|grep 8080 > /dev/null
if [ $? -eq 0 ];then
echo "tomcat 已经启动了..不做操作!" > /dev/null
else
echo "`date '+%Y%m%d %H%M%S'` Flag_File检测...存在! 启动tomcat!"
/tomcat/bin/startup.sh
echo ""
fi
#echo ""
sleep 5
fi
done
stop_tomcat.sh:根据端口杀进程
kill -9 $(netstat -tlnp | grep 8080 | awk '{print $7}' | awk -F '/' '{print $1}')
- 自动化测试:k8s环境下,通过检测文件是否存在来自动启停tomcatapp的方法_20160316_七侠镇莫尛貝
- 检测一个文件是否存在的方法
- 通过对URL判断,检测引用的文件是否存在
- NET检测文件和文件夹是否存在的方法
- PHP下常见的检查函数(变量是否存在,文件是否存在 函数是否存在 方法是否存在)
- 检测文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- Asp检测文件是否存在的函数
- VC下判断文件是否存在的方法
- VC下判断文件是否存在的方法
- Linux下判断文件或文件夹是否存在的方法
- cocos2dx lua 下查找文件是否存在的方法
- Ubuntu下判断文件是否存在的方法
- PHP检测文件方法,类方法是否存在
- 如何检测文件是否存在
- 检测文件夹&文件是否存在
- Activity生命周期再分析
- [快速配置]RedisCluster
- 从命令行运行程序
- android 触控
- c++二叉树的建立、前序中序后序深搜、宽搜、宽搜带行号
- 自动化测试:k8s环境下,通过检测文件是否存在来自动启停tomcatapp的方法_20160316_七侠镇莫尛貝
- 千亿级SaaS市场:企业级服务的必争之地
- iOS面试题十
- pillow pil 图像处理
- The total number of locks exceeds the lock table size错误(已纠正)
- ceph故障【pgs inconsistent;scrub errors】解决方法
- 决策树,ID3算法
- .Net Zookeeper 学习目录
- JVM:内存溢出问题