HTTP API 说明
(适用dtle 3.x nomad 插件)
nomad 默认开启一个web服务,可使用curl工具向其发送HTTP请求。
作业管理
完整可参考
常用如下:
前置知识:nomad 中 job、task、alloc的概念
job包含多个task。一个dtle job有src和dest两个task。
task在nomad节点上的执行,称为allocation。同一个task的多次执行(如失败-重试)会创建多个allocation。
列出所有job
curl -XGET 127.0.0.1:4646/v1/jobs | jq
添加job
curl -XPOST -data @job.json 127.0.0.1:4646/v1/jobs | jq
job.json的内容说明参看 作业(job)配置
获取某个job信息
curl -XGET 127.0.0.1:4646/v1/job/<job_name> | jq
列出某job的所有allocation
curl -XGET "127.0.0.1:4646/v1/job/<job_name>/allocations | jq
查看某个allocation的执行状态
curl -XGET "127.0.0.1:4646/v1/allocation/<alloc_id>" | jq
区别任务处于全量还是增量状态
curl -XGET "127.0.0.1:4646/v1/job/<jobId>/allocations" | jq '.' | grep job_stage
"DisplayMessage": "job_stage_full",
"DriverMessage": "job_stage_full",
"DisplayMessage": "job_stage_incr",
"DriverMessage": "job_stage_incr",
- 当结果中 只 出现 job_stage_full 时,任务处于全量阶段
- 当结果出现 job_stage_incr 时,任务处于增量阶段
停止(删除)job
curl -XDELETE 127.0.0.1:4646/v1/job/my-job
# DELETE后job信息仍会在nomad上保留一段时间供查询,直到nomad自动回收(gc)
# 指定purge可立刻删除
curl -XDELETE 127.0.0.1:4646/v1/job/my-job?purge=true
dtle 3.x 移除了暂停/恢复job的功能. 可使用删除/添加job来达成相同的效果。
- 注意保留添加job时使用的job配置文件
- job删除后进度(Gtid)仍然保存在consul kv中
- 位置:
dtle/<job_name>/Gtid
- 再次添加job时,consul中保存的Gtid优先于job配置中的项目
- 位置:
如果要后续添加同名job,并且不想从consul保存的位置继续(而是从job配置中指定的位置开始),则 需要删除consul重的数据。见 consul 上的 job 数据管理。
节点管理
更多可参考
列出所有节点:
curl -XGET "127.0.0.1:4646/v1/nodes" | jq
[{
"Address": "127.0.0.1",
"Datacenter": "dc1",
"Drivers": {
"dtle": {
"Attributes": {
"driver.dtle": "true",
"driver.dtle.version": "9.9.9.9",
"driver.dtle.full_version": "9.9.9.9-master-eeb399e9"
},
"Detected": true,
"Healthy": true,
}
},
"ID": "0e70636d-b274-c139-185e-e37dcf7a4bca",
"Name": "nomad0",
"Status": "ready",
"Version": "0.11.2"
}]
可以查看节点名、节点ID和dtle插件信息(部分项省略)。