环境要求

  • Open JDK 8+
  • Apache Maven 3+
  • 任意 Spring Data Jpa 支持的关系型数据库(MySQL/Oracle/MS SQLServer…)
  • MongoDB(可选),任意支持GridFS的mongoDB版本(4.2.6测试通过,其余未经测试,仅从理论角度分析可用),缺失该组件的情况下将无法使用在线日志、容器部署等扩展功能

初始化关系数据库

调度服务器(oh-my-scheduler-server)的持久化层基于Spring Data Jpa实现,对于能够直连数据库的应用,**开发者仅需完成数据库的创建**,即运行SQL:CREATE database if NOT EXISTS oms-product default character set utf8mb4 collate utf8mb4_unicode_ci;`

  • OhMyScheduler支持环境隔离,提供日常(daily)、预发(pre)和线上(product)三套环境,请根据使用的环境分别部署对应的数据库oms-dailyoms-preoms-product
  • 调度服务器属于时间敏感应用,强烈建议检查当前数据库所使用的时区信息(show variables like "%time_zone%";),务必确保time_zone代表的时区与JDBC URL中serverTimezone字段代表的时区一致!
  • 手动建表SQL文件:下载地址

部署调度服务器——源码编译

调度服务器(oh-my-scheduler-server)支持任意的水平扩展,即多实例集群部署仅需要在同一个局域网内启动新的服务器实例,性能强劲无上限!

调度服务器(oh-my-scheduler-server)为了支持环境隔离,分别采用了日常(application-daily.properties)、预发(application-pre.properties)和线上(application-product.properties)三套配置文件,请根据实际需求进行修改,以下为配置文件详解。

配置项 含义 可选
server.port SpringBoot配置,HTTP端口号,默认7700
oms.akka.port OhMyScheduler配置,Akka端口号,默认10086
oms.alarm.bean.names OhMyScheduler报警服务Bean名称,多值逗号分隔
spring.datasource.core.xxx 关系型数据库连接配置
spring.mail.xxx 邮件配置 是,未配置情况下将无法使用邮件报警功能
spring.data.mongodb.xxx MongoDB连接配置 是,未配置情况下将无法使用在线日志功能
oms.log.retention.local 本地日志保留天数,负数代表永久保留
oms.log.retention.remote 远程日志保留天数,负数代表永久保留
oms.container.retention.local 本地容器保留天数,负数代表永久保留
oms.container.retention.remote 远程容器保留天数,负数代表永久保留

完成配置文件修改后,即可正式开始部署:

  • 打包:运行mvn clean package -U -Pdev -DskipTests,构建调度中心Jar文件。
  • 运行:运行java -jar oms-server.jar --spring.profiles.active=product,指定生效的配置文件。注意,宿主机需要打开7700(HTTP服务)和10086(ActorSystem服务)端口。
  • 验证:访问http://ip:port查看是否出现OhMyScheduler的欢迎页面。

部署调度服务器——Docker

建议自己根据项目中的Dockerfile稍作修改,制作自己的Docker镜像,而不是直接使用官方镜像
原因在于:容器功能需要用到Git和Maven来编译代码库,而公司内部往往都会搭建自己的私有仓库,所以Git容器功能没办法正常运行(即,官方镜像中的调度服务器不支持Git容器的部署)。

部署流程:

  1. 下载镜像(最新版本请参考 Docker Hub):docker pull tjqq/oms-server
  2. 创建容器并运行(所有SpringBoot的启动参数都可通过-e Params=""传入)
  1. docker run -d
  2. -e PARAMS="--spring.profiles.active=product"
  3. -p 7700:7700 -p 10086:10086
  4. --name oms-server
  5. -v ~/docker/oms-server:/root/oms-server tjqq/oms-server:$version

部署前端页面

提供源码编译和Docker两种方式。

源码编译方式

  1. 源码克隆:OhMyScheduler-Console
  2. 替换地址:修改src/main.js中的baseURL为调度服务器地址
  3. npm install && npm run build
  4. 将构建结果dist文件夹拷入Nginx静态目录下,修改配置文件,重启nginx,enjoy~

    Docker方式

    由于需要修改baseUrl,需要开发者自己构建Docker镜像。当然,为了部署的高效便捷,我们提供了一键构建镜像的脚本。
    **

特别鸣谢:感谢某知名上市电商公司前端开发者对本项目的大力支持!

初始化应用分组

每一个业务系统初次接入OhMyScheduler时,都需要先完成应用注册

image.png

  • 应用注册,用于进行业务分组:
    • 应用名称:关键参数,一般填入接入的业务应用名称即可,需要保证唯一。同一个应用名称的所有worker视为一个集群被调度中心调度。
    • 应用描述:可选参数,便于记忆,无实际用处。
  • 用户注册,用于收集报警信息,用户注册录入个人信息后,即可通过报警配置进行通知。