Skip to content

Install

wangjiajun9012 edited this page Feb 21, 2025 · 2 revisions

手动编译

  1. 编译前端项目
# 克隆仓库
git clone https://github.com/jiawesoft/jiascheduler-ui.git
# 安装依赖
cd jiascheduler-ui
pnpm install
# 编译项目
pnpm build
# 编译完成后,将dist目录下的文件复制到jiascheduler的dist目录下
cp -r dist/* jiascheduler/dist/
  1. 编译 jiascheduler
# 编译
cargo build -r --target x86_64-unknown-linux-musl
# 查看编译后的执行文件
ls target/x86_64-unknown-linux-musl/release

jiascheduler-console (控制台)

jiascheduler的控制台服务,打包了前端页面,可以直接运行,依赖redis,mysql,运行前需要提前准备好中间件。

jiascheduler-console需要使用redis的stream功能提供消息队列服务,mysql的json数据类型提供高级的查询服务所以请至少保证

  • redis 版本 >= 5.0.0
  • mysql 版本 >= v8.0.0
  • mariadb 版本 >= v10.2.7

参数介绍

A high-performance, scalable, dynamically configured job scheduler developed with rust

Usage: jiascheduler-console [OPTIONS]

Options:
  -d, --debug                        if enable debug mode
      --bind-addr <BIND_ADDR>        http server listen address, eg: "0.0.0.0:9090"
      --config <FILE>                where to read config file, you can temporarily overwrite the configuration file using command-line parameters [default: ~/.jiascheduler/console.toml]
      --redis-url <REDIS_URL>        redis connect address, eg: "redis://:wang@127.0.0.1"
      --database-url <DATABASE_URL>  mysql connect address, eg: "mysql://root:root@localhost:3306/jiascheduler"
  -h, --help                         Print help
  -V, --version                      Print version

安装

请注意 "--redis-url" 和 "--database-url" 仅用于调试,首次安装时仅需提供"--bind-addr"参数

# 首次安装需要指定--bind-addr,服务启动后访问0.0.0.0:9090,进入安装界面,按提示完成安装
./jiascheduler-console --bind-addr 0.0.0.0:9090

执行成功后,访问 localhost:9090 进入安装界面,在控制台安装页面,填写数据库和redis的连接信息,以及填写comet secret,安装完毕后会默认生成~/.jiascheduler/console.toml配置文件,如果你手动修改了配置文件,需要重启服务。

redis在安装页面仅作参数校验,如果你的redis账号密码填写错误,需要查看日志定位问题。comet secret是控制台,comet,agent之间通信的密钥,请妥善保管。在启动comet和agent时,需要指定相同的comet secret,否者无法通信。

注意:此时comet和agent未安装,仅能访问控制台,并不能进行任务调度

jiascheduler-comet (连接层)

jiascheduler的连接层,Agent启动后会和Comet建立长连接,控制台下发指令给Comet,Comet将指令转发给对应的Agent,Agent执行具体的作业。启动时需要传入secret,整个通信过程采用secret认证,防止非法连接。

jiascheduler-comet使用redis的stream功能提供消息队列服务,Agent通过长连接给Comet上报的事件消息会通过stream传递,由控制台订阅消费。所以服务启动时需要传入redis的连接地址

** 参数介绍 **

Usage: jiascheduler-comet [OPTIONS]

Options:
  -d, --debug            if enable debug mode
  -b, --bind <BIND>      [default: 0.0.0.0:3000]
  -r <REDIS_URL>         [default: redis://:wang@127.0.0.1]
      --secret <SECRET>  [default: rYzBYE+cXbtdMg==]
  -h, --help             Print help
  -V, --version          Print version
# 设置comet监听地址,注意如果console安装时未采用默认值的话,这里需要传入--secret,-r指定redis连接地址
./jiascheduler-comet --bind 0.0.0.0:3000 --secret rYzBYE+cXbtdMg==  -r redis://:wang@127.0.0.1

jiascheduler-agent (执行层)

jiascheduler的执行层,负责执行具体的作业,建立ssh加密通道,执行作业。启动时需要传入secret,整个通信过程采用secret认证,防止非法连接。

启动时需要传--comet-addr参数,指定comet的地址,--comet-secret指定comet的密钥,否则无法通信。

Usage: jiascheduler-agent [OPTIONS]

Options:
  -d, --debug
          If enable debug mode
  -b, --bind <BIND>
          [default: 0.0.0.0:3001]
      --comet-addr <COMET_ADDR>
          [default: ws://127.0.0.1:3000]
      --output-dir <OUTPUT_DIR>
          Directory for saving job execution logs [default: ./log]
      --comet-secret <COMET_SECRET>
          [default: rYzBYE+cXbtdMg==]
  -n, --namespace <NAMESPACE>
          [default: default]
      --ssh-user <SSH_USER>
          Set the login user of the instance for SSH remote connection
      --ssh-password <SSH_PASSWORD>
          Set the login user's password of the instance for SSH remote connection
      --ssh-port <SSH_PORT>
          Set the port of this instance for SSH remote connection
      --assign-username <ASSIGN_USERNAME>
          Assign this instance to a user and specify their username
      --assign-password <ASSIGN_PASSWORD>
          Assign this instance to a user and specify their password
  -h, --help
          Print help
  -V, --version
          Print version

重要参数介绍

  • --comet-addr 指定comet的地址,默认采用websocket协议,所以这里需要传入ws格式的地址
  • --comet-secret 指定comet的密钥,如果填写错误则无法通信。总结,我们在console安装时配置了secret,comet启动时传入secret,agent启动时也需要传入相同的secret。
  • --namespace 指定命名空间,默认是default,由于支持内网穿透,可能存在ip相同的情况,所以需要指定不同的namespace区分。
  • --ssh-user 指定ssh登录的用户名用于从控制台进行webssh连接登录,可忽略,后续可在控制台配置。
  • --ssh-password 指定ssh登录的密码,可忽略。
  • --assign-username 指定该实例所属的控制台用户,可忽略,后续可在控制台配置。
  • --assign-password 该实例所属的控制台用户的密码,可忽略。