侧边栏壁纸
博主头像
平常心的blog 博主等级

行动起来,活在当下

  • 累计撰写 12 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Jpom从入门到入坑(二)

平常心
2024-10-15 / 0 评论 / 0 点赞 / 8 阅读 / 0 字

5. Jpom的【功能管理->节点&项目】

5.1 逻辑节点

1.列表

1-tflx.webp

2.快速安装,a)、快速安装jpom-agent并绑定到server端。b). 已经安装了Agent,快速绑定到服务端。

2-iodj.webp3-plmt.webp

3.管理,管理节点所关联的项目和可以执行的脚本,此脚本来自【脚本管理->节点脚本列表】

4-mxgp.webp

4.终端,绑定了这个节点的SSH才可以点击终端。ssh命令行终端。

5.2 项目列表

项目主要是配合【代码构建】并对节点的一系列操作操作,主要有一下几种:

112.webp

我认为以上的,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 &

5-fkds.webp

6.webp

2.File:主要适应与前端代码构建成功后把构建后的文件发布到指定目录。

7.webp

3.Dsl:可以做它说的几种情况,也可以配合shell脚本完成其他方式的部署,比如:构建Docker进行并部署。

8.webp9.webp

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 模式的项目 - 脚本说明

  1. 脚本里面至少需要实现的三件事:启动、停止、查状态
  2. 查状态输出最后一行需要是 running:​pid pid 必须为数字且表示当前项目的进程 id ,如果不匹配项目则显示未运行
  3. 脚本里面不能使用阻塞命令奥(阻塞命令和非阻塞命令解释
  4. 脚本里面支持的变量有:​{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.列表

10.webp

5.新增,创建项目选择运行方式。填写项目路径也就是构建的产物保存的位置。

11.webp

6.文件,查看项目目录中的文件

12.webp

7.控制台可以查看项目的运行情况

13.webp

5.3 分发列表

项目和分发的区别,项目只能指定一个节点执行。分发可以在多个节点执行一个项目,也可以在多个节点执行一个项目。
【新增关联项目】可以创建一个关联已有项目的分发(可关联多个项目)【创建分发项目】可创建一个项目并指定多个分发节点。

1.列表

14.webp

2.分发分两种类型

a). 新增关联项目:可以添加多个节点和项目,然后选择【分发后操作】

15.webp

b). 新增分发项目

16.webp

3.分发文件:可以分发多种文件,在选择【构建产物】时【选择构建】可以选择一个构建方式。
选择完构建方式点击【选择产物】可以选择构建方式中产生的构建产物。

17c.webp

点击【选择构建】

18.webp19.webp

点击【选择产物】

20.webp21.webp

5.4 分发日志

显示分发运行时产生的日志

5.5. 授权配置

22.webp

5.6 日志搜索

1.列表

23.webp

2.新增

24.webp

3.查看

25.webp

6. Jpom的【功能管理->SSH管理】

6.1 SSH列表

1.列表

26.webp

2.管理面板,通过SSH终端管理节点。【文件管理】可以管理文件

27.webp

3.终端,可以打开SSH终端。
4.文件,可以打开文件管理,管理文件的上传,下载。

6.2 命令管理

【功能管理->SSH管理->命令管理】是通过SSH节点执行的脚本。【功能管理->脚本管理】下的所有脚本都是通过Agent。

1.列表

28.webp

2.新增,执行新增的脚本分为两种执行方式,a). 手动执行,b). 通过设置【自动执行】来定时自动执行。

29.webp30.webp

ffcc8199-cbed-46c3-b096-8bfe39e8149e.webp

选择脚本库

32.webp

3.【执行】
在选中的节点去执行脚本。

33.webp

4.【触发器】向触发器发送请求,对应的脚本就会执行。

34.webp

6.3 命令执行记录

记录命令执行日志。

7. Jpom的【功能管理->Docker管理】

7.1 Docker列表

1.列表

bfd086fc-52fc-4802-9d59-b1e4c75537a5.webp

2.【控制台】显示容器信息

2bae95cf-6b52-46bd-bcbe-013511d4fc4a.webp

3.【编辑】增加标签

ec8fee55-a7fe-4145-a7d4-b648fa23e06f.webp

7.2 Swarm集群列表

1.列表

2.服务(docker service ls)

a3bba9a2-c5e7-4d40-93e0-7a1a2d2813b3.png

【创建服务】(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 服务名

1.webp

2.webp

3.webp

3.【节点】

4.webp

4.【编辑】修改Swarm集群名称和标签

5.webp

0

评论区