使用 erpc worker 运行、监控应用并为其付费
erpc worker status 显示您的应用是否在运行,以及其按小时计算的费用。每次启动都会先显示其价格,erpc worker delete --release-server 会结束应用按小时使用的 gRPC、Shreds 和 Unlimited RPC,然后结束其按小时计费的服务器。本页介绍 ERPC CLI
v0.1.0-rc.4,这是一个预发布版本。检查应用
status 显示应用处于锁定状态还是正在运行、哪个 release,以及从何时开始。登录后,它还会显示该环境按小时计算的费用,每个项目附带您的账户为其支付的价格,以及您账户的 Credit 及其可维持的时长。--json 在 hourly.charged 下包含相同内容。不在账户计费项目中的项目会被说明为不在其中,而不会被称为已结束,因为该列表可能比启动晚一分钟。没有会话时,或无法读取您账户的计费项目时,
status 会说明已记录的内容。控制应用
应用的
API_TOKEN 在此读取,通过标准输入到达服务器,不出现在任何命令行上,也不出现在任何日志中。每个 worker 命令都接受 --env <name>(默认为 default)和 --json,但 secret unlock 和 secret lock 除外:它们针对的是本机的密钥库而不是某个应用,不接受 --env。从任何位置运行时,命令会按 erpc 所知的名称找到其应用;secret put、secret rm、key import、firewall allow 和 firewall deny 只通过 --dir 指定应用。按小时计费如何运作
- 每次启动都会先显示其价格。在终端中,只有在得到确认后才会启动;使用
--yes时,写明要启动什么的命令行本身就是确认。 - 按小时计费的产品从 ERPC Credit 中支付,ERPC Credit 需要预先购买,Credit 不足以支付的启动会被拒绝。价格请见价格和 ERPC Web Dashboard。
- 新的 VPS 一旦被命名就会被记录,此时它尚未就绪。下一次部署会沿用它,而不是再购买一台。
- 对于
deploy,没有得到响应的启动会被再次发送,绝不会作为新的启动发送。其请求键保留在记录中([env.<name>.starting]),因此再次运行同一命令会发送同一请求。在某些响应之后,它会一直保留,直到您手动将其删除(erpc 无法记录的购买)。erpc worker run不保留记录,因此其下一次运行会发出新的请求。 - 一次只部署一个环境。同时启动的同一环境的两次部署可能会购买两份,这不受支持。
- 一条线路是否仍然存在,取决于账户正在为哪些项目付费。erpc 从不结束不按小时计费的线路:请在仪表盘中结束它。
移除应用
erpc worker delete 移除 worker。erpc worker delete --release-server 还会结束其线路,然后结束其按小时计费的服务器。无法结束的内容会保留在记录中,不按小时计费的线路会被列出名称,以便在仪表盘中结束。- 普通删除会拒绝已购买但从未连接上的 VPS,因为删除会在其仍在计费时遗忘它。对已连接上的按小时计费的 VPS 进行普通删除,会在其仍在计费时将其从记录中移除,并对此发出警告。
- 使用
--forget时,erpc 不会尝试连接已无法连接的服务器,--forget-line <id>将在 erpc 之外结束的线路从记录中移除。
从服务器测量 RPC 延迟
erpc worker bench 从环境的服务器为 RPC 调用计时:ERPC 的共享 RPC、其 Unlimited RPC,以及其他任意 RPC,并排比较。服务器上的 agent 为每次调用计时,因此这些数字就是应用实际得到的。bash
--method接受getSlot、getBlockHeight、getLatestBlockhash或getHealth。--no-shared不包括共享 RPC。--url的值可以是 URL 本身、op://…、keychain:…或keystore:…引用(指向保存着带有密钥的 URL 的位置;绝不能是交易密钥的条目,这样的引用会被拒绝),或-(从标准输入读取,或提示您不显示地输入)。超过六个端点会被拒绝。- bench 会打印 p50、p90、p99、最小值和最大值、失败情况及第一个失败原因,以及在同一轮中每个响应落后于最新响应多少个 slot。
- 密钥只通过标准输入到达服务器,表中显示 scheme、主机和端口。
备份应用的状态数据
erpc worker backup on 每天将应用的状态数据备份到 ERPC Global Storage,由 restic 加密,时间为服务器时间的 --at,并在其后 30 分钟内进行。需要一个存储方案(erpc storage buy 5)。- 备份的内容是应用的状态数据,即
/var/lib/private/erpc-worker-<id>。release 不会被备份,因为部署会将它们放回。Redis 和 PostgreSQL 的数据不在备份范围内。 - 服务器无法删除快照。它从不持有 erpc 会话、账户的管理密钥或其主密码。
- 被接管的服务器可以读取账户中每台机器的快照,包括本机的快照;在
off之后仍保留仓库的密钥,而 restic 从不更改该密钥;以另一台机器的名义添加快照,因此发生这种情况后,请检查restore latest选中的是什么;以及填满账户的存储,从而使每台机器的备份都停止。erpc worker backup off会首先撤销服务器的访问密钥,无论服务器是否响应。 - restic 按文件当前的样子复制,而此时 worker 仍在运行,因此数据库可能需要单独的转储才能恢复到一致的状态。服务器关机期间错过的运行会在服务器恢复后运行。
erpc worker backup off、status和now分别停止备份、报告备份情况和运行备份。快照在off之后仍然保留,erpc backup prune --host会精简旧的快照。
在本机上运行
erpc backup init 之后,从本机恢复:bash
多个环境和多台机器
- 一台服务器上的多个 worker 各自作为自己的单元运行,共用服务器的防火墙表,并且各自只开放自己的端口。
- 一个应用可以有多个环境(
[env.staging]、[env.prod]),每个环境有自己的服务器和线路。 - 环境可以将其服务器信息保存在 1Password 中,而不是
erpc.toml中。这样,任何登录到该保险库并拥有应用仓库的机器都可以运行所有命令;此类应用中的keychain:和keystore:引用会收到警告,因为其他机器无法读取它们。新环境会将其信息保存在 1Password 中,前提是erpc login也将会话保存在那里;deploy --vault <vault-id>指定另一个保险库,deploy --inline将信息保存在erpc.toml中。






