Files
agent-skills/skills/g3fo-docs/references/middleware/powerjob/deploy.md
T

174 lines
7.2 KiB
Markdown
Raw Normal View History

# 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)