Eseguire, monitorare e pagare un'app con erpc worker
erpc worker status mostra se la tua app è in esecuzione e quanto costa all'ora. Ogni avvio mostra prima il suo prezzo, e erpc worker delete --release-server termina le linee gRPC, Shreds e Unlimited RPC che l'app usa a ore, poi il suo server orario.Questa pagina descrive ERPC CLI
v0.1.0-rc.4, una versione pre-release.Controllare un'app
status mostra se l'app è bloccata o in esecuzione, quale release e da quando. Quando hai effettuato l'accesso, mostra anche quanto costa l'ambiente all'ora, ogni voce con il prezzo che viene addebitato al tuo account, e il credito del tuo account con quanto durerà. --json riporta le stesse informazioni sotto hourly.charged.Una voce che non è tra gli addebiti dell'account viene indicata come non presente tra di essi, non come terminata, perché quell'elenco può essere in ritardo di un minuto rispetto a un avvio. Senza una sessione, o quando gli addebiti del tuo account non si possono leggere,
status riporta ciò che resta registrato.Gestire l'app
Il valore
API_TOKEN dell'app viene letto qui e raggiunge il server tramite standard input, mai su una riga di comando né in un journal. Ogni comando del worker accetta --env <name> (predefinito default) e --json, tranne secret unlock e secret lock, che riguardano il keystore di questa macchina e non un'app, e non accettano --env. Eseguito da qualsiasi posizione, un comando trova la sua app tramite il nome con cui erpc la conosce; secret put, secret rm, key import, firewall allow e firewall deny accettano l'app solo tramite --dir.Come funzionano gli addebiti orari
- Ogni avvio mostra prima il suo prezzo. In un terminale, un avvio avviene solo dopo un sì; con
--yes, la riga di comando che nomina ciò che va avviato vale come sì. - Un prodotto orario si paga con ERPC Credit, che si acquista in anticipo, e un avvio che il credito non copre viene rifiutato. I prezzi sono su Prezzi e nella ERPC Web Dashboard.
- Un nuovo VPS viene registrato non appena ha un nome, prima di essere pronto. La distribuzione successiva lo riprende invece di acquistarne un altro.
- Per
deploy, un avvio che non ha ricevuto risposta viene inviato di nuovo, mai come nuovo avvio. La sua chiave di richiesta resta registrata ([env.<name>.starting]), quindi eseguire di nuovo lo stesso comando invia la stessa richiesta. Dopo alcune risposte resta lì finché non la rimuovi a mano (Un acquisto che erpc non riesce a registrare).erpc worker runnon registra nulla, quindi la sua esecuzione successiva fa una nuova richiesta. - Distribuisci un ambiente alla volta. Due distribuzioni dello stesso ambiente avviate insieme possono acquistare due volte, e questo non è supportato.
- Se una linea esiste ancora lo decide ciò che viene addebitato all'account. Una linea non fatturata a ore non viene mai terminata da erpc: terminala nella dashboard.
Rimuovere un'app
erpc worker delete rimuove il worker. erpc worker delete --release-server termina anche le sue linee, poi il suo server orario. Ciò che non è stato possibile terminare resta registrato, e una linea non fatturata a ore viene indicata per nome, da terminare nella dashboard.- Un delete semplice rifiuta un VPS acquistato e mai raggiunto, perché lo dimenticherebbe mentre è ancora addebitato. Un delete semplice di un VPS orario già raggiunto lo toglie dal registro mentre è ancora addebitato, e lo segnala con un avviso.
- Con
--forget, erpc non tenta di raggiungere un server che non è più raggiungibile, e--forget-line <id>toglie dal registro una linea terminata al di fuori di erpc.
Misurare la latenza RPC dal server
erpc worker bench cronometra le chiamate RPC dal server dell'ambiente: l'RPC condiviso di ERPC, il suo Unlimited RPC e qualsiasi altro, uno accanto all'altro. L'agente sul server cronometra ogni chiamata, quindi i numeri sono quelli che ottiene l'app.bash
--methodaccettagetSlot,getBlockHeight,getLatestBlockhashogetHealth.--no-sharedesclude l'RPC condiviso. Un valore di--urlpuò essere l'URL stesso, un riferimentoop://…,keychain:…okeystore:…(al punto in cui è conservato un URL che contiene una chiave; mai alla voce della chiave di trading, che viene rifiutata), oppure-(letto dallo standard input, oppure chiesto e digitato senza che venga mostrato). Più di sei endpoint vengono rifiutati.- Il bench stampa p50, p90, p99, minimo e massimo, gli errori con il primo motivo, e di quanti slot ogni risposta era indietro rispetto alla più aggiornata dello stesso round.
- Le chiavi raggiungono il server solo tramite standard input, e la tabella mostra schema, host e porta.
Fare il backup dei dati di stato dell'app
erpc worker backup on esegue ogni giorno il backup dei dati di stato dell'app su ERPC Global Storage, cifrato da restic, all'orario --at del server ed entro i 30 minuti successivi. Serve un piano storage (erpc storage buy 5).- Ciò che finisce nel backup sono i dati di stato dell'app,
/var/lib/private/erpc-worker-<id>. Le release no, perché una distribuzione le rimette al loro posto. I dati di Redis e PostgreSQL non sono coperti. - Il server non può eliminare gli snapshot. Non possiede mai la sessione di erpc, la chiave di amministrazione dell'account né la sua password master.
- Un server compromesso può leggere gli snapshot di tutte le macchine dell'account, compresi quelli di questa macchina; conservare dopo
offla chiave del repository, che restic non cambia mai; aggiungere snapshot con il nome di un'altra macchina, quindi dopo un caso del genere controlla cosa sceglierestore latest; e riempire lo storage dell'account, il che ferma i backup di tutte le macchine.erpc worker backup offrevoca per prima cosa la chiave di accesso del server, che il server risponda o no. - restic copia i file così come sono mentre il worker è in esecuzione, quindi un database può aver bisogno di un proprio dump per essere ripristinato in modo coerente. Un'esecuzione saltata mentre il server era spento viene eseguita quando torna attivo.
erpc worker backup off,statusenowfermano il backup, ne riportano lo stato e lo eseguono. Gli snapshot restano dopooff, eerpc backup prune --hostsfoltisce quelli vecchi.
Ripristina da questa macchina, dopo aver eseguito
erpc backup init su di essa:bash
Più ambienti e più macchine
- Più worker su un server vengono eseguiti ciascuno come unità propria, condividono la tabella del firewall del server e ognuno apre solo la propria porta.
- Un'app può avere più ambienti (
[env.staging],[env.prod]), ciascuno con il proprio server e le proprie linee. - Un ambiente può tenere i dati del proprio server in 1Password invece che in
erpc.toml. In quel caso qualsiasi macchina che ha effettuato l'accesso a quel vault, con il repository dell'app, può eseguire ogni comando; per i riferimentikeychain:ekeystore:in un'app di questo tipo viene mostrato un avviso, perché un'altra macchina non può leggerli. Un nuovo ambiente tiene i propri dati in 1Password quandoerpc logintiene lì la sessione;deploy --vault <vault-id>indica un altro vault, edeploy --inlinetiene i dati inerpc.toml.






