解决 erpc worker 的故障

找到 erpc worker 打印的消息的开头,并按其所在行的说明操作。
本页介绍 ERPC CLI v0.1.0-rc.4,这是一个预发布版本。

错误消息及应对方法

worker 的故障使用 erpc 的错误码和退出状态:请参阅错误与退出码。
消息(开头部分)原因应对方法
<app> cannot start without <SETTING>run.requires 指定的设置没有被任何来源设置erpc worker secret put <SETTING>、在 [vars] 中设置,或使用设置它的线路进行部署(--grpc、--unlimited)
your key was added but does not get inSSH agent 没有签名:1Password 处于锁定状态,或其请求未被允许解锁 1Password,允许该请求,然后再次运行同一命令。它会接着执行
1Password could not …: authorization timeout1Password 请求批准,但无人响应在 1Password 中允许该请求,然后再次运行
<NAME> is empty; nothing was keptsecret put 读取到空的标准输入:shell 不是终端在终端中运行,或通过管道传入值
the keystore is locked, and nobody is at a terminal …没有终端的命令需要密钥库,且没有保留解锁状态在终端中运行 erpc worker secret unlock,然后再次运行该命令
nothing is kept under keystore:… on this machine该值保存在另一台机器的密钥库中在本机运行 erpc worker secret put <NAME> --replace;对于密钥,请带来那台机器的整个 keystore 目录及其密码短语
release <id> failed: …; the server went back to <previous>新的 release 没有通过健康检查查看 erpc worker logs。上一个 release 仍在运行
… is locked: the trading key has not been handed over服务器重启了,agent 失败或被终止后由 systemd 再次启动,或执行了 stop --lockerpc worker start
port <n> is taken: …另一个保持运行的 worker 使用了相同的健康检查端口,或另一个程序正在该端口上监听在 erpc.toml 中为应用指定其专用的端口,然后再次部署
release <id> runs, and its WAF did not come up: …WAF 没有开始监听。最常见的原因是另一个程序占用了 waf.port运行 erpc worker logs --waf,然后释放该端口或更改 waf.port,并再次部署。在此期间应用仍在运行
waf.<key> …(来自 check、deploy)某个 [waf] 键超出了其范围,或 waf.port 低于 1024,或与 run.port、SSH 或健康检查的端口相同修正 erpc.toml。erpc worker check 会一次列出所有问题
the WAF's port <port> was not opened to …(来自 firewall allow、deny、sync)该更改会在服务器尚未运行的 WAF 规则下让新的人进入erpc worker deploy:它会使新规则就位,然后开放端口
<kind> line <id> did not become active in <n> minutes该线路仍在设置中再次部署以继续等待
OUT_OF_STOCK该区域中没有该方案的空闲服务器使用 --region <another> 部署
the start may or may not have gone through: …请求已发出但没有返回响应,或响应为 5xx、408 或 429再次运行同一命令:它会发送同一请求
this purchase, or another of the account's, is still being made …第一个请求仍在处理中,或账户的另一项购买持有其锁稍后再次运行同一命令:它会发送同一请求
… changed in 1Password since this command read it另一台机器在此期间写入了清单条目再次运行该命令
the shared RPC takes none of the account's API keys from this machine (<n> tried)(来自 secret put --from-account、erpc rpc call、erpc webhook run)账户的每个密钥在从本机使用时都被拒绝:密钥已过期,账户没有有效的共享 RPC 方案,或者密钥被限制为只能从其他地址使用,例如服务器的地址ERPC Web Dashboard 会显示密钥的过期时间和方案,并可创建新密钥。对于限制为服务器地址的密钥:erpc worker secret put ERPC_API_KEY,手动输入或通过管道传入
shared: … HTTP 401(bench)共享 RPC 拒绝了该密钥:没有有效的共享 RPC 方案,或密钥错误在仪表盘中检查方案,或设置 ERPC_API_KEY
shared: … HTTP 429(bench)方案的限速使用 --interval 150 或更大的值

erpc 无法记录的购买

当某台服务器或某条线路可能已由 erpc 无法记录的先前请求启动时,请在仪表盘中查看您账户的服务器和线路。使用 erpc worker deploy --vps <ID> 沿用服务器,或结束不需要的内容。然后手动从 erpc.toml 的 [env.<name>.starting] 中删除该条目:erpc 没有可以删除它的标志,在删除之前,同一命令会发送同一请求。

如果服务器可能已被接管

  1. 首先运行 erpc worker backup off,撤销服务器的备份访问密钥。off 不会撤回服务器已经读取的内容。
  2. 将资金从其交易密钥中转出,并更换其 Secret。
  3. 从 ERPC Web Dashboard 重装服务器,然后再次部署。
如果重装更改了服务器的 SSH 主机密钥,erpc 会拒绝该服务器,直到您更新已固定的密钥。部署会带回代码,但不会带回应用的状态数据,后者只有备份才能恢复(备份应用的状态数据)。

erpc 从不做的事

  • 将密钥、Secret 或携带其中之一的 URL 放到命令行上。
  • 将交易密钥或应用的 Secret 写入文件,只有一个例外:您机器上的密钥库,其中每一项都用您的密码短语加密。在服务器上,erpc worker backup on 会将服务器自己的备份密钥保存在仅限 root 访问的文件中。
  • 在不显示价格的情况下启动任何东西。
  • 让服务器处于开放状态:防火墙在应用首次启动之前就已生效。
  • 连接主机密钥与已固定密钥不匹配的服务器。
worker 指南列出了所有消息,包括 WAF 的消息。