README.md 4.1 KB

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 服务 > > 管理节点, 用于管理 agent 节点, 构建部署应用等

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/devops_init.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 这三个变量的值

Nginx 配置

devops-mgr 应用通常是经由 Nginx 反向带来来访问, 并且 Nginx 还需要提供对 websocket 的支持.

支持 websocket

nginx.conf 文件中配置 websocket:

map $http_connection $connection_upgrade {
        "~*Upgrade" $http_connection;
        default keep-alive;
    }

代理配置

Nginx 代理配置示例:

server {
   listen 80;
   server_name devops.reghao.cn;
   access_log off;

   location / {
      proxy_set_header HOST $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://127.0.0.1:4020;
   }
   location /ws {
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_cache off;
      proxy_http_version 1.1;
      proxy_buffering off;
      proxy_read_timeout 100s;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://127.0.0.1:4020;
   }
}

使用

至此, devops 系统已部署并处于运行状态, 你可通过自己域名或直接通过 IP:PORT 访问系统.

devops-mgr 中默认只有一个 admin 用户, 帐号和密码分别为 admin 和 123456

强烈建议首次登录后修改 admin 用户密码