使用 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。
- 金鑰只透過標準輸入傳到伺服器,表格顯示協定、主機與連接埠。
備份應用的狀態資料
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:參照會收到警告,因為其他機器無法讀取它們。當erpc login將工作階段保存在那裡時,新環境會將其資訊保存在 1Password;deploy --vault <vault-id>指定另一個保險庫,deploy --inline則將資訊保存在erpc.toml中。






