# damocles-worker 任务管理
之前的文档中,我们提到,在 damocles-cluster 体系中,将扇区的流程管理放到了 worker 中。
因此,扇区任务的管理,尤其是异常处理,也就要通过扇区所处的 worker 实例来执行。
但是如果全部的状态查看、异常处理都需要登录到对应机器去操作,那么肯定非常不方便。
因此在 v0.2.0 及之后的版本中,增加了 worker 向 sector-manager 上报状态,sector-manager 远程管理 worker 的机制。
下面,我们会就 worker 自管理和 sector-manager 管理 worker 的方式分别进行说明。
# damocles-worker 自管理
damocles-worker 的自管理主要通过
./dist/bin/damocles-worker worker
提供的一组工具,调用管理接口进行操作,其中包含的子命令是
- list
- pause
- resume
# list
list
用于列出当前运行的 damocles-worker 实例中的所有 sealing_thread
的当前状态。他的使用方式是
damocles-worker worker list
我们以代码库中的 mock 配置为例:
$ ./dist/bin/damocles-worker worker list
#0: "/home/dtynn/proj/github.com/ipfs-force-community/venus-cluster/mock-tmp/store1"; sector_id=Some(s-t010000-2), paused=true, paused_elapsed=Some(17s), state=C1Done, last_err=Some("permanent: No cached parameters found for stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f [failure finding /var/tmp/filecoin-proof-parameters/v28-stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f.params]")
#1: "/home/dtynn/proj/github.com/ipfs-force-community/venus-cluster/mock-tmp/store2"; sector_id=Some(s-t010000-3), paused=true, paused_elapsed=Some(17s), state=C1Done, last_err=Some("permanent: No cached parameters found for stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f [failure finding /var/tmp/filecoin-proof-parameters/v28-stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f.params]")
#2: "/home/dtynn/proj/github.com/ipfs-force-community/venus-cluster/mock-tmp/store3"; sector_id=Some(s-t010000-1), paused=true, paused_elapsed=Some(17s), state=C1Done, last_err=Some("permanent: No cached parameters found for stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f [failure finding /var/tmp/filecoin-proof-parameters/v28-stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f.params]")
可以看到,针对每一个 sealing_thread
,会列出
序号
本地存储位置信息
扇区标识(如果有正在处理的扇区任务)
是否已暂停
已暂停的时间(如果有已暂停的扇区任务)
当前状态
最近一次异常信息(如果有因异常而暂停的扇区任务)
# pause
pause
用于暂停指定序号的 sealing_thread
。它的使用方式是
$ damocles-worker worker pause --index <index>
其中:
index
需要和list
中的序号匹配。
# resume
resume
用于恢复处于暂停状态的 sealing_thread
。它的使用方式是
damocles-worker worker resume [--state <state>] --index <index>
其中:
index
需要和list
中的序号匹配。state
是选填项。不填写时,扇区会尝试以当前状态重启;如果填写了正确的
state
值,将会以指定状态重启对于不同的
sealing_thread
任务类型,可选的状态值在 11.任务状态流转
# damocles-manager 管理 damocles-worker
damocles-manager 对 damocles-worker 的管理主要是两方面:
- 接收 worker 实例的定时上报信息
- 调用指定 damocles-worker 实例上的管理接口
使用者通过
./dist/bin/damocles-manager util worker
提供的一组工具,调用 damocles-manager 的管理接口,或代理调用指定 damocles-worker 的管理接口,完成操作。
包含的子命令是:
- list
- info
- pause
- resume
# list
这里的 list
用于列出所向本 damocles-manager 实例上报过信息的 worker 概况,例如:
$ ./dist/bin/damocles-manager util worker list
Name Dest Threads Empty Paused Errors LastPing(with ! if expired)
127.0.0.1 127.0.0.1:17890 3 0 3 3 2.756922465s
可以看到,针对每一个实例,会列出:
- 实例名(如果没有指定实例名,则会以连接 damocles-manager 使用的 ip)
- 实例连接信息
sealing_thread
数量- 空载的
sealing_thread
数量 - 暂停的
sealing_thread
数量 - 报错的
sealing_thread
数量 - 上一次上报距离当前时间的间隔
# info / pause / resume
这一组命令都是针对指定的 damocles-worker 实例执行的。
他们的效果等效于 damocles-worker 自己的 list
/ pause
/ resume
,使用方式分别为
damocles-manager util worker info <worker instance name or address>
damocles-manager util worker pause <worker instance name or address> <thread index>
damocles-manager util worker resume <worker instance name or address> <thread index> [<next state>]
具体信息可以通过 help
来查看,而参数的定义和效果则和 damocles-worker 管理工具保持一致。
举例来说:
$ ./dist/bin/damocles-manager util worker info 127.0.0.1
Index Loc SectorID Paused PausedElapsed State LastErr
0 /home/dtynn/proj/github.com/ipfs-force-community/venus-cluster/mock-tmp/store1 s-t010000-2 true 13m42s C1Done permanent: No cached parameters found for stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f [failure finding /var/tmp/filecoin-proof-parameters/v28-stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f.params]
1 /home/dtynn/proj/github.com/ipfs-force-community/venus-cluster/mock-tmp/store2 s-t010000-3 true 13m42s C1Done permanent: No cached parameters found for stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f [failure finding /var/tmp/filecoin-proof-parameters/v28-stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f.params]
2 /home/dtynn/proj/github.com/ipfs-force-community/venus-cluster/mock-tmp/store3 s-t010000-1 true 13m42s C1Done permanent: No cached parameters found for stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f [failure finding /var/tmp/filecoin-proof-parameters/v28-stacked-proof-of-replication-merkletree-poseidon_hasher-8-0-0-sha256_hasher-032d3138d22506ec0082ed72b2dcba18df18477904e35bafee82b3793b06832f.params]