CI/CD

reghao d38a844cef update README.md 1 tahun lalu
agent eb6e064bf9 使用 mgr 关键字 1 tahun lalu
common eb6e064bf9 使用 mgr 关键字 1 tahun lalu
deployer f27fd1c3aa 1.调整 Sftp#exec 方法中获取结果和错误的代码 1 tahun lalu
logstash 3247ed7946 全局替换 bnt 为 devops 1 tahun lalu
mgr 9bee98a1df 删除 templates/home/index1.html 文件中的 style="height:400px;" 1 tahun lalu
zzz d38a844cef update README.md 1 tahun lalu
.gitignore 3247ed7946 全局替换 bnt 为 devops 1 tahun lalu
README.md d38a844cef update README.md 1 tahun lalu
pom.xml ba5b978d7a web 模块更名为 mgr 1 tahun lalu

README.md

devops

后台使用的 layui 模板来自这个项目 master 分支的 a806fd0a 版本

依赖

  • os:Linux
  • jdk:11
  • maven:3.9
  • mysql:5.7

架构

devops 项目模块:

  • agent > 监听 127.0.0.1:60001 端口 > > 监听这个端口的目的是防止系统中同时运行多个 agent 实例 > > 代理节点, 用于管理机器
  • common > 公共依赖
  • deployer > 用来部署 mgr 和 agent 的工具
  • logstash > 日志收集器
  • mgr > 监听 4020 端口 > > 通过这个端口对外提供 HTTP 服务 > > 管理节点

devops-mgr 和 devops-agent 之间的关系如下图所示:

agent 和 mgr 之间使用 websocket 进行通信

每台被管理的机器上都需要且只能一个部署 agent 实例

在 agent 的配置文件中指定 mgr 的地址

agent 使用 Linux /etc/machine-id 文件中的字符串作为 machineId 在 mgr 中唯一地标识一台机器

如果 VirtualBox 中使用的 vdisk 是通过 clonehd 得到, 那么多台 VM 中 /etc/machine-id 文件的内容是相同的, 此时需要在 VM 中执行 devops/zzz/reset_machine_id.sh 脚本来重置 machine-id

只能部署一个 mgr 实例

初始化 MySQL

  • 1.devops/zzz/schema.sql 文件是系统的初始数据
  • 2.执行 devops/zzz/init_schema.sh 脚本可完成数据库的创建和初始化 > 需要自行指定脚本中的 host, username, password, db 等变量值
  • 3.然后可以开始构建和部署系统

构建

构建 jar 包流程:

  • 1.使用 cd 命令切换到 devops/zzz 目录
  • 2.执行 build_jar.sh 脚本
  • 3.构建完成后, 生成的 jar 包会存放在 devops/mgr/bin 和 devops/agent/bin 目录中

部署

部署 devops-mgr 流程:

  • 1.修改 devops/mgr/bin/devopsmgr.yml 文件中的配置 > mysql 配置 > > app.baseDir 指定 mgr 产生的数据存放的位置
  • 2.使用 cd 命令切换到 devops/mgr/bin 目录
  • 3.执行 start.sh 脚本

部署 devops-agent 流程:

  • 1.修改 devops/agent/bin/devopsagent.json 文件中的配置
  • 2.使用 cd 命令切换到 devops/agent/bin 目录
  • 3.执行 start.sh 脚本

多节点部署

多节点部署需要用到 devops-deployer 工具, 它本质上是一个 SFTP/SSH 客户端, 在和节点建立 SSH 连接后, 执行相应的 Shell 命令.

  • 1.在 devops/zzz/servers.csv 文件中填写节点的相应信息 > 必须指定密码或私钥文件绝对路径
  • 2.使用 cd 命令切换到 devops/zzz 目录
  • 3.根据需要执行 deploy_mgr.sh 或 deploy_agent.sh 脚本 > 首先要设置脚本中 proj_dir, remote_dir 和 server_file 这三个变量的值