PowerJob 部署记录
一、Docker方式
调度中心(PowerJob-Server)部署
-
使用docker拉取服务端最新镜像
(最新版本请参考 Docker Hub):
docker pull tjqq/powerjob-server:latest
docker run -d \
--restart=always \
--name powerjob-server \
-p 7700:7700 -p 10086:10086 -p 10010:10010 \
-e TZ="Asia/Shanghai" \
-e JVMOPTIONS="" \
-e PARAMS="--spring.profiles.active=product --spring.datasource.core.jdbc-url=jdbc:mysql://192.168.1.113:3307/powerjob-product?useUnicode=true&characterEncoding=UTF-8 --spring.datasource.core.username=root --spring.datasource.core.password=yimai@2024 --spring.data.mongodb.uri=mongodb://192.168.1.113:27017/powerjob-product" \
-v ~/docker/powerjob-server:/root/powerjob/server -v ~/.m2:/root/.m2 \
tjqq/powerjob-server:latest
行1: docker run -d :创建 docker 容器,-d 参数指定为后台运行
行2:指定该容器随着 docker 启动而自启
行3:指定容器名称
行4:指定宿主机与容器的端口映射关系(默认使用 Bridge 网络模式)
行5:时区,默认时区为中国标准时区(Asia/Shanghai),国外用户请修改为正确的时区
行6:JVM启动参数,有需求的可以自己添加(-Xmx、-Xms、-Xmn等)
行7:通过
-e Params=""
传入 SpringBoot 启动参数,详细参数见上表(最小配置为示例参数,需要传入配置文件名称、JDBC_URL、数据库用户名、数据库密码)
行8:映射数据卷,强烈建议映射/roo**t/powerjob/server和/root/.m2这两个路径**,前者存储了 powerjob-server所有的运行时文件(日志),后者可以避免使用 maven 编译容器时重复下载依赖的问题(详见容器章节)。
行9:指定使用的 docker 镜像
执行器(powerjob-worker)初始化
方式一: 基于宿主应用的初始化
方式一: 基于代理应用(powerjob-agent)的初始化
agent 是一个仅集成了官方处理器的执行器(其实就是为 worker 加了一个 main 方法),如果常见需求为脚本的调度执行,可以考虑直接部署 agent,简单快捷方便~
推荐直接使用 Docker 部署:powerjob-agent
与 server 一样,启动参数通过环境变量-e PARAMS
传入,全部参数请见底部。
docker pull tjqq/powerjob-agent:latest
docker run -d \
--restart=always \
--name perform-hub-powerjob-agent \
-e PARAMS="--app perform-hub --server 192.168.1.113:7700" \
-p 27777:27777 \
-v ~/docker/powerjob-agent:/root \
tjqq/powerjob-agent:latest
或直接启动 agent 的jar包:java -jar powerjob-worker-agent-3.1.0.jar -a my-agent -s 127.0.0.1:7700
Usage: PowerJobAgent [-hV] -a=<appName> [-e=<storeStrategy>] [-l=<length>]
[-o=<protocol>] [-p=<port>] -s=<server> [-t=<tag>]
powerjob-worker agent
-a, --app=<appName> worker-agent's name
-e, --persistence=<storeStrategy>
storage strategy, DISK or MEMORY
-h, --help Show this help message and exit.
-l, --length=<length> ProcessResult#msg max length
-o, --protocol=<protocol>
transporter protocol, AKKA or HTTP
-p, --port=<port> transporter working port, not recommended to change
-s, --server=<server> oms-server's address, IP:Port OR domain
-t, --tag=<tag> worker-agent's tag
-V, --version Print version information and exit.
使用规范:
注册一个账号只给一个系统使用, 假如如履约平台中有大量定时任务调度场景, 那么就场景一个perform-hub/12345678账号, 这个账号只管理履约平台相关定时任务.
上述部署powerjob-agent中 --app的参数其实是注册的账号, 每注册一个账号需要启动一个powerjob-agent, 且--app参数需要与注册的账号一致才会工作.
也就是说powerjob-agent启动后会根据--app的参数去powerjob-server中执行该账号的定时任务(个人愚见)