# PowerJob 部署配置 ## PowerJob 用途说明 PowerJob 是一个分布式任务调度与计算框架,专注于解决大规模任务调度问题,提供丰富的任务类型和强大的调度能力。在项目中,PowerJob 主要用于以下场景: ### 1. 分布式任务调度 - **定时任务调度**:支持 cron 表达式、固定延迟、固定频率等多种调度方式 - **任务分片**:将大任务拆分为多个小任务,并行执行,提高处理效率 - **任务依赖**:支持任务间的依赖关系配置,实现复杂的工作流 - **高可用设计**:通过集群部署确保任务调度的可靠性,避免单点故障 ### 2. 多样化任务类型 - **HTTP 任务**:直接调用 HTTP 接口执行任务 - **Java 任务**:执行 Java 代码,支持动态加载和执行 - **Shell 任务**:执行 Shell 脚本 - **Python 任务**:执行 Python 脚本 - **MapReduce 任务**:支持大数据处理场景 ### 3. 任务管理与监控 - **可视化管理界面**:提供 Web 控制台,方便查看和管理任务 - **实时监控**:实时监控任务执行状态、日志和结果 - **告警机制**:支持任务失败、超时等告警通知 - **历史记录**:保存任务执行历史,便于追溯和分析 ## Docker Compose 配置 ```yaml powerjob-server: image: powerjob/powerjob-server:v5.1.2 container_name: powerjob-server restart: always depends_on: - mysql deploy: resources: limits: memory: 1536M replicas: 1 placement: constraints: - node.role == manager networks: - my-net ports: - 7700:7700 - 10086:10086 - 10010:10010 - 10077:10077 volumes: - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone - /data/powerjob/data:/root/powerjob/server - /data/powerjob/application.properties:/application.properties - /data/powerjob/lib:/app/lib environment: - JVMOPTIONS=-Dpowerjob.network.external.address=192.168.3.230 -Dpowerjob.network.local.address=0.0.0.0 -javaagent:/app/lib/jasypt-agent.jar ``` ## 应用配置文件 (`/data/powerjob/application.properties`) ```properties spring.datasource.core.jdbc-url=jdbc:mysql://192.168.3.233:3306/powerjob?useUnicode=true&characterEncoding=UTF-8 spring.datasource.core.username=root spring.datasource.core.password=ENC(RjBbbZtMkQ1XoESFu6Wo7XeC29GcDkeIiIq92ONWx2odVz9NAmClnxjRXJwq1dNI) #spring.datasource.core.password=afe123456 jasypt.encryptor.password=1234 #jasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256 #jasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator oms.mongodb.enable=false spring.profiles.active=product ``` ## Spring Boot 配置连接集群 ```yaml powerjob: worker: app-name: ${app.service-name} protocol: http server-address: 192.168.3.230:7700,192.168.3.200:7700 ``` ## 部署说明 ### 1. 端口说明 | 端口 | 作用 | 说明 | |------|------|------| | 7700 | PowerJob 服务器的 Web 服务端口 | 用于访问 Web 控制台,接收 Worker 注册和任务请求,必须打开 | | 10086 | Akka 端口 | PowerJob 配置的 Akka 端口,用于内部通信 | | 10010 | 多语言客户端 HTTP 端口 | PowerJob 配置的多语言客户端 HTTP 端口 | | 10077 | MU 协议端口 | PowerJob 配置的 MU 协议端口,可选打开 | ### 端口配置原则 1. **最省事的方法**:所有端口(7700 + 10086 + 10010 + 10077)全打开 2. **精细化控制原则**: - 对于任何用户,7700 端口必须打开,这是调度服务器的 Web 服务端口 - `oms.协议.port` 的端口按需打开,考虑 server-server 和 server-worker 通讯场景: - server-server 默认通过 HTTP 协议交互(由 `oms.transporter.main.protocol` 控制),必须打开 HTTP 10010 端口 - server-worker 部分通过 HTTP,部分通过 AKKA,需要打开 AKKA 的 10086 端口 ### 主要配置项说明 | 配置项 | 含义 | 是否必填 | |--------|------|----------| | server.port | SpringBoot 配置,HTTP 端口号,默认 7700 | 否,且不建议更改 | | oms.transporter.active.protocols | server 需要激活的通讯协议,建议激活全部支持的协议 | 否,且不建议更改 | | oms.transporter.main.protocol | 主要通讯协议,用于 server 与 server 之间的通讯 | 否 | | oms.akka.port | PowerJob 配置,Akka 端口号,默认 10086 | 否,且不建议更改 | | oms.http.port | PowerJob 配置,多语言客户端 HTTP 端口号,默认 10010 | 否,且不建议更改 | | oms.mu.port | PowerJob 配置,MU 协议端口号,默认 10077 | 是 | | oms.table-prefix | 自定义数据库表名前缀 | 是 | | spring.datasource.core.xxx | 关系型数据库连接配置 | 否 | | spring.mail.xxx | 邮件配置 | 是,未配置情况下将无法使用邮件报警功能 | | oms.container.retention.local | 本地容器保留天数,负数代表永久保留 | 是 | | oms.container.retention.remote | 远程容器保留天数,负数代表永久保留 | 是 | | oms.instanceinfo.retention | 任务实例和工作流实例信息的保留天数 | 是,推荐使用默认配置,生产环境保留 7 天 | | oms.auth.initiliaze.admin.password | 系统初始化时默认创建的超级管理员密码 | 是,默认值 powerjob_admin,无此配置时,随机生成密码 | | oms.auth.dingtalk.* | 钉钉用户账号体系相关配置内容 | 否,仅启用钉钉账号登录体系时需要配置 | ### 2. 目录准备 在部署 PowerJob 之前,需要创建以下目录: ```bash mkdir -p /data/powerjob/{data,lib} ``` ### 3. 环境变量说明 - **JVMOPTIONS**: - `-Dpowerjob.network.external.address`:PowerJob 服务器的外部访问地址,用于 Worker 连接 - `-Dpowerjob.network.local.address`:PowerJob 服务器的本地绑定地址 - `-javaagent:/app/lib/jasypt-agent.jar`:Jasypt 加密代理,用于解密配置文件中的敏感信息 ### 4. 配置文件说明 - **spring.datasource.core.jdbc-url**:MySQL 数据库连接 URL - **spring.datasource.core.username**:MySQL 数据库用户名 - **spring.datasource.core.password**:MySQL 数据库密码(支持 Jasypt 加密) - **jasypt.encryptor.password**:Jasypt 加密密钥 - **oms.mongodb.enable**:是否启用 MongoDB(用于存储任务日志,默认 false) - **spring.profiles.active**:Spring Boot 激活的配置文件 ### 5. 注意事项 1. **数据库配置**: - 确保 MySQL 数据库已创建,并且用户具有足够的权限 - 首次启动时,PowerJob 会自动创建所需的表结构 2. **集群部署**: - 可以部署多个 PowerJob 服务器实例,通过负载均衡提高可用性 - 所有实例共享同一个 MySQL 数据库 - Worker 配置中指定多个服务器地址,实现高可用连接 3. **安全配置**: - 生产环境中建议使用 Jasypt 加密数据库密码等敏感信息 - 调整 Jasypt 加密密钥,避免使用默认密钥 4. **资源限制**: - 根据实际任务量调整内存限制(当前配置为 1536M) - 监控服务器资源使用情况,及时调整配置 ## 相关文档 - [PowerJob 官方文档](https://www.yuque.com/powerjob/guidence/deploy_server) - [PowerJob GitHub 仓库](https://github.com/PowerJob/PowerJob)