5. Jpom的【功能管理->节点&项目】
5.1 逻辑节点
1.列表
2.快速安装,a)、快速安装jpom-agent并绑定到server端。b). 已经安装了Agent,快速绑定到服务端。
3.管理,管理节点所关联的项目和可以执行的脚本,此脚本来自【脚本管理->节点脚本列表】
4.终端,绑定了这个节点的SSH才可以点击终端。ssh命令行终端。
5.2 项目列表
项目主要是配合【代码构建】并对节点的一系列操作操作,主要有一下几种:
我认为以上的,Jar,File和Dsl使用的比较多。
1.jar:主要是把jar包发布到对应节点上并启动。适用于非Docker环境,直接部署jar包。下面是执行脚本。
nohup java -DJpom.application=C9MS2W -DJpom.basedir=/root/ruoyi-admin -jar \
/root/ruoyi-admin/ruoyi-admin.jar --server.port=8888 \
--spring.profiles.active=prod >> /root/C9MS2W/C9MS2W.log 2>&1 &
2.File:主要适应与前端代码构建成功后把构建后的文件发布到指定目录。
3.Dsl:可以做它说的几种情况,也可以配合shell脚本完成其他方式的部署,比如:构建Docker进行并部署。
DSL内容
description: 测试
run:
start:
# scriptId: project.sh
# scriptId: G@xxxx
scriptId: b25959ad82174962ac2327cc58ccf244
scriptArgs: start
scriptEnv:
"boot_active": test
status:
# scriptId: project.sh
# scriptId: G@xxxx
scriptId: 6787d4de1bf0476ba7a3fffa72e8467a
scriptArgs: status
stop:
# scriptId: project.sh
# scriptId: G@xxxx
scriptId: 13a705e8bd27469d8547bf0f17e62b2f
scriptArgs: stop
DSL 模式的项目 - 脚本说明
- 脚本里面至少需要实现的三件事:启动、停止、查状态
- 查状态输出最后一行需要是 running:pid pid 必须为数字且表示当前项目的进程 id ,如果不匹配项目则显示未运行
- 脚本里面不能使用阻塞命令奥(阻塞命令和非阻塞命令解释
- 脚本里面支持的变量有:{PROJECT_ID}、{PROJECT_NAME}、${PROJECT_PATH}
启动脚本(start)
docker_name=ruoyi-admin;
cd /root/ruoyi-admin;
# oldInstances=$(docker ps -a --format '{{.Names}}' | grep -q $docker_name);
# echo "查看实例是否存在:${oldInstances}";
if docker ps -a | grep "$docker_name" > /dev/null; then
echo "开始-----移除已经存在的实例 ==> ${docker_name}";
docker rm -f ${docker_name};
echo "结束-----移除已经存在的实例 ==> ${docker_name}";
else
echo "容器 $docker_name 不存在。"
fi
if test "$(docker images -q $docker_name:latest 2> /dev/null)" = "";then
echo "不存在镜像 ==> ${docker_name}"
else
echo "移除镜像 ==> ${docker_name}"
docker rmi -f $docker_name;
fi
echo "开始------构建镜像 ==> ${docker_name}"
docker build -t $docker_name .;
echo "结束------构建镜像 ==> ${docker_name}"
# date;
echo "开始-----创建实例 ==> ${docker_name}";
docker run -v /mnt/ruoyi-admin/logs:/ruoyi/server/logs \
--restart=on-failure:10 \
-e "TZ=Asia/Shanghai" \
-e "SPRING_PROFILES_ACTIVE=prod" \
-p 8080:8080 --name ${docker_name} -d ${docker_name};
echo "结束-----创建实例 ==> ${docker_name}";
LogPath=/mnt/ruoyi-admin/logs/sys-console.log
# 检查start是否成功
head -n 10 $LogPath
状态脚本(status)
docker_name=ruoyi-admin;
# 判断容器是否存在
if docker ps -a | grep "$docker_name" > /dev/null; then
# 获取容器运行状态
exist=`docker inspect --format '{{.State.Running}}' ${docker_name}`
if [ "${exist}" == "true" ]; then
echo "$docker_name 运行状态。"
else
echo "$docker_name 停止状态。"
fi
# 获取容器pid
pid=`docker inspect --format '{{.State.Pid}}' ${docker_name}`
# 是否是启动状态
echo "running:$pid"
else
echo "容器 $docker_name 不存在。"
fi
停止脚本(stop)
docker_name=ruoyi-admin;
# 判断容器是否存在
if docker ps -a | grep "$docker_name" > /dev/null; then
# 获取容器运行状态
exist=`docker inspect --format '{{.State.Running}}' ${docker_name}`
if [ "${exist}" == "true" ]; then
echo "$docker_name 运行状态。"
docker stop $docker_name
else
echo "$docker_name 停止状态。"
fi
else
echo "容器 $docker_name 不存在。"
fi
4.列表
5.新增,创建项目选择运行方式。填写项目路径也就是构建的产物保存的位置。
6.文件,查看项目目录中的文件
7.控制台可以查看项目的运行情况
5.3 分发列表
项目和分发的区别,项目只能指定一个节点执行。分发可以在多个节点执行一个项目,也可以在多个节点执行一个项目。
【新增关联项目】可以创建一个关联已有项目的分发(可关联多个项目)【创建分发项目】可创建一个项目并指定多个分发节点。
1.列表
2.分发分两种类型
a). 新增关联项目:可以添加多个节点和项目,然后选择【分发后操作】
b). 新增分发项目
3.分发文件:可以分发多种文件,在选择【构建产物】时【选择构建】可以选择一个构建方式。
选择完构建方式点击【选择产物】可以选择构建方式中产生的构建产物。
点击【选择构建】
点击【选择产物】
5.4 分发日志
显示分发运行时产生的日志
5.5. 授权配置
5.6 日志搜索
1.列表
2.新增
3.查看
6. Jpom的【功能管理->SSH管理】
6.1 SSH列表
1.列表
2.管理面板,通过SSH终端管理节点。【文件管理】可以管理文件
3.终端,可以打开SSH终端。
4.文件,可以打开文件管理,管理文件的上传,下载。
6.2 命令管理
【功能管理->SSH管理->命令管理】是通过SSH节点执行的脚本。【功能管理->脚本管理】下的所有脚本都是通过Agent。
1.列表
2.新增,执行新增的脚本分为两种执行方式,a). 手动执行,b). 通过设置【自动执行】来定时自动执行。
选择脚本库
3.【执行】
在选中的节点去执行脚本。
4.【触发器】向触发器发送请求,对应的脚本就会执行。
6.3 命令执行记录
记录命令执行日志。
7. Jpom的【功能管理->Docker管理】
7.1 Docker列表
1.列表
2.【控制台】显示容器信息
3.【编辑】增加标签
7.2 Swarm集群列表
1.列表
2.服务(docker service ls)
【创建服务】(docker service create命令)
a). mode=ingress|host
参数--publish(-p)用来把容器里的端口映射到主机外面来。
基本格式
有两种格式:
a). 短格式: <externport>:<internport>
b). 长格式:[mode=host],published=<externport>,target=<internport>
短格式只能标识两个参数即可,外部端口:内部端口,长格式还可以标识mode参数。
mode=ingress|host 的用法
格式:mode=[ingress|host],其中ingress是缺省格式,含义:
a). ingress把端口映射到整个swarm的网络,从而访问swarm网络的任何一台主机都可以,即使这台主机没有一个service的container在运行。
b). host只把端口映射到service的container所在运行的主机,其他主机就不能访问。
b). --mode replicated|global
a). --mode=replicated是缺省选项,表示要创建的container的数量由参数--replicas决定(缺省值为1)
b). --mode=global,表示根据swarm的node个数,在每一个node上创建并且只创建一个container,即contaienr和node是一一对应关系。
c). --endpoint-mode dnsrr|vip
负载均衡有两种模式:VIP、DNSRR
a). VIP:分配独立的虚拟IP,DNS记录解析到服务名中作为代理IP。默认模式
b). dnsrr:DNS记录不解析VIP,而去解析每个容器内的IP。dnsrr模式不支持端口对外暴露。
d). --mount type=bind|volume,src=<HOST-PATH>,dst=<CONTAINER-PATH>
当类型是bind时,src为路径,当类型为volume,src为volume名称(VOLUME-NAME)
# 创建命令
docker service create --replicas 3 --name yudao-server \
--mount type=bind,src=/mnt/ruoyi-admin/logs,dst=/ruoyi/server/logs \
--mode=replicated \ # 默认值,还可以设置为global
#-p mode=ingress,published=48080,target=48080 \ # mode=ingress默认值,mode=host
#--endpoint-mode dnsrr \ # --endpoint-mode dnsrr|vip,VIP为默认模式
-p 48080:48080 \ # 默认值 mode=ingress
-e SPRING_PROFILES_ACTIVE=prod \
registry.cn-hangzhou.aliyuncs.com/zywlxh/ruoyi-admin:1.0.17
Swarm基础命令
# 扩容或缩容至3个副本
docker service update --replicas 3 服务名
docker service scale 服务名=3
# 查看服务列表
docker service ls
# 查看副本分布在哪些节点
docker service ps 服务名
# 查看服务明细
docker service inspect 服务名
# 删除服务
docker servcie rm 服务名
3.【节点】
4.【编辑】修改Swarm集群名称和标签
评论区