Questa pagina introduce lo strumento Autoscaler per Spanner (Autoscaler), un strumento open source che puoi utilizzare come strumento complementare a Spanner. Questo strumento consente di aumentare o ridurre automaticamente la capacità di calcolo in una o più istanze Spanner in base alla quantità di capacità in uso.
Per ulteriori informazioni sulla scalabilità in Spanner, consulta Spanner con scalabilità automatica. Per informazioni sul deployment dello strumento Autoscaler, consulta quanto segue:
- Esegui il deployment dello strumento di gestione della scalabilità automatica per Spanner nelle funzioni Cloud Run.
- Esegui il deployment dello strumento di scalabilità automatica per Spanner in Google Kubernetes Engine (GKE).
Questa pagina illustra le funzionalità, l'architettura e la configurazione di alto livello dell'Autoscaler. Questi argomenti illustrano la procedura di deployment di Autoscaler in uno dei runtime supportati in ciascuna delle diverse topologie.
Gestore della scalabilità automatica
Lo strumento Autoscaler è utile per gestire l'utilizzo e le prestazioni dei deployment di Spanner. Per aiutarti a bilanciare il controllo dei costi con le esigenze di prestazioni, lo strumento di gestione della scalabilità automatica monitora le tue istanze e aggiunge o rimuove automaticamente nodi o unità di elaborazione per garantire che rimangano nei seguenti parametri:
- I valori massimi consigliati per l'utilizzo della CPU.
- Il limite consigliato per lo spazio di archiviazione per nodo.
Più o meno un margine configurabile.
I deployment di Spanner con scalabilità automatica consentono all'infrastruttura di adattarsi e scalare automaticamente per soddisfare i requisiti di carico con poca o nessuna intervento. La scalabilità automatica ottimizza anche le dimensioni dell'infrastruttura di cui è stato eseguito il provisioning, il che può aiutarti a ridurre al minimo gli addebiti sostenuti.
Architettura
L'Autoscaler ha due componenti principali, il Poller e lo Scaler. Sebbene sia possibile eseguire il deployment di Autoscaler con configurazioni diverse in più ambienti di runtime in più topologie con configurazioni diverse, la funzionalità di questi componenti di base è la stessa.
Questa sezione descrive questi due componenti e le relative finalità in modo più dettagliato.
Poller
Il monitor raccoglie ed elabora le metriche delle serie temporali per una o più istanze Spanner. Il Polling pre-elabora i dati delle metriche per ogni istanza Spanner in modo che solo i punti dati più pertinenti vengano valutati e inviati allo Scaler. La preelaborazione eseguita dal poller semplifica anche la procedura di valutazione delle soglie per le istanze Spanner regionali, a due regioni e multiregionali.
Scalatore
Lo Scaler valuta i punti dati ricevuti dal componente Poller e determina se è necessario modificare il numero di nodi o unità di elaborazione e, in caso affermativo, di quanto. Il servizio confronta i valori delle metriche con la soglia, più o meno un margine consentito, e regola il numero di nodi o unità di elaborazione in base al metodo di scalabilità configurato. Per ulteriori dettagli, consulta la sezione Metodi di scalabilità.
Durante il flusso, lo strumento Autoscaler scrive un riepilogo dei suoi consigli e delle sue azioni in Cloud Logging per il monitoraggio e il controllo.
Funzionalità del gestore della scalabilità automatica
Questa sezione descrive le funzionalità principali dello strumento Autoscaler.
Gestire più istanze
Lo strumento Autoscaler è in grado di gestire più istanze Spanner in più progetti. Le istanze multiregionali, a doppia regione e regionali hanno tutte diverse soglie di utilizzo che vengono utilizzate durante il ridimensionamento. Ad esempio, i deployment multiregionali e a due regioni vengono scalati in base a un utilizzo della CPU ad alta priorità del 45%, mentre i deployment regionali vengono scalati in base a un utilizzo della CPU ad alta priorità del 65%, entrambi con un margine consentito. Per ulteriori informazioni sulle diverse soglie per la scalabilità, consulta Avvisi per utilizzo elevato della CPU.
Parametri di configurazione indipendenti
Ogni istanza Spanner con scalabilità automatica può avere una o più pianificazioni di polling. Ogni pianificazione del polling ha un proprio insieme di parametri di configurazione.
Questi parametri determinano i seguenti fattori:
- Il numero minimo e massimo di nodi o unità di elaborazione che controllano quanto può essere grande o piccola l'istanza, aiutandoti a controllare gli addebiti sostenuti.
- Il metodo di scalabilità utilizzato per regolare l'istanza Spanner in base al tuo carico di lavoro.
- I periodi di attesa per consentire a Spanner di gestire le suddivisioni dei dati.
Metodi di scalabilità
Lo strumento Autoscaler fornisce tre diversi metodi di ridimensionamento per aumentare e diminuire le istanze Spanner: graduale, lineare e diretto. Ogni metodo è progettato per supportare diversi tipi di carichi di lavoro. Puoi applicare uno o più metodi a ogni istanza Spanner sottoposto a scalabilità automatica quando crei pianificazioni di polling indipendenti.
Le sezioni seguenti contengono ulteriori informazioni su questi metodi di scalabilità.
Gradualmente
La scalabilità graduale è utile per i carichi di lavoro con picchi piccoli o multipli. Provisiona la capacità per appianare tutto con un singolo evento di scalabilità automatica.
Il seguente grafico mostra un pattern di caricamento con più plateau o step di caricamento, dove ogni passaggio presenta più picchi di piccole dimensioni. Questo pattern è adatto al metodo graduale.
Quando viene superata la soglia di carico, questo metodo esegue il provisioning e la rimozione di nodi o unità di elaborazione utilizzando un numero fisso, ma configurabile. Ad esempio, vengono aggiunti o rimossi tre nodi per ogni azione di ridimensionamento. Modificando la configurazione, puoi consentire l'aggiunta o la rimozione di incrementi di capacità più elevati in qualsiasi momento.
Lineare
La scalabilità lineare è ideale per i pattern di carico che cambiano in modo più graduale o hanno alcuni picchi elevati. Il metodo calcola il numero minimo di nodi o unità di elaborazione necessarie per mantenere l'utilizzo al di sotto della soglia di scalabilità. Il numero di nodi o unità di elaborazione aggiunti o rimossi in ogni evento di scalabilità non è limitato a un valore di incremento fisso.
Il pattern di caricamento di esempio nel seguente grafico mostra aumenti e diminuzioni improvvisi e significativi del carico. Queste fluttuazioni non sono raggruppate in passaggi distinguibili come nel grafico precedente. Questo modello potrebbe essere gestito meglio utilizzando la scala lineare.
Lo strumento Autoscaler utilizza il rapporto tra l'utilizzo osservato e la soglia di utilizzo per calcolare se aggiungere o sottrarre nodi o unità di elaborazione dal numero totale corrente.
La formula per calcolare il nuovo numero di nodi o unità di elaborazione è la seguente:
newSize = currentSize * currentUtilization / utilizationThreshold
Diretto
La scalabilità diretta consente un aumento immediato della capacità. Questo metodo è pensato per supportare i carichi di lavoro batch in cui è richiesto periodicamente un numero di nodi superiore predeterminato in base a una pianificazione con un'ora di inizio nota. Questo metodo scala l'istanza fino al numero massimo di nodi o unità di elaborazione specificati nella pianificazione ed è progettato per essere utilizzato insieme a un metodo lineare o graduale.
Il seguente grafico mostra l'elevato aumento pianificato del carico, per il quale il gestore della scalabilità automatica ha preprovisionato la capacità per l'utilizzo del metodo diretto.
Una volta completato il carico di lavoro batch e l'utilizzo è tornato ai livelli normali, a seconda della configurazione, viene applicato il ridimensionamento lineare o graduale per ridurre automaticamente l'istanza.
Configurazione
Lo strumento di gestione della scalabilità automatica offre diverse opzioni di configurazione che puoi utilizzare per gestire la scalabilità dei deployment di Spanner. Sebbene le funzioni Cloud Run e i parametri GKE siano simili, vengono forniti in modo diverso. Per ulteriori informazioni sulla configurazione dello strumento di scalabilità automatica, consulta Configurazione di un deployment di Cloud Run Functions e Configurazione di un deployment GKE.
Configurazione avanzata
Lo strumento di scalabilità automatica offre opzioni di configurazione avanzate che ti consentono di controllare con maggiore precisione quando e come vengono gestite le istanze Spanner. Le sezioni seguenti illustrano una selezione di questi controlli.
Soglie personalizzate
Lo strumento di scalabilità automatica determina il numero di nodi o unità di elaborazione da aggiungere o sottrarre a un'istanza utilizzando le soglie di Spanner consigliate per le seguenti metriche di carico:
- CPU ad alta priorità
- CPU media mobile su 24 ore
- Utilizzo archiviazione
Ti consigliamo di utilizzare le soglie predefinite descritte in Creare avvisi per le metriche di Spanner. Tuttavia, in alcuni casi potresti voler modificare le soglie utilizzate dall'elaboratore automatico. Ad esempio, puoi utilizzare soglie più basse per fare in modo che lo strumento Autoscaler reagisca più rapidamente rispetto alle soglie più alte. Questa modifica contribuisce a evitare l'attivazione degli avvisi a soglie più elevate.
Metriche personalizzate
Sebbene le metriche predefinite nello strumento Autoscaler affrontino la maggior parte degli scenari di rendimento e scalabilità, in alcuni casi potrebbe essere necessario specificare le tue metriche utilizzate per determinare quando eseguire lo scale up e lo scale down. Per questi scenari,
definisci le metriche personalizzate nella configurazione utilizzando la proprietà
metrics
.
Margini
Un margine definisce un limite superiore e uno inferiore rispetto alla soglia. Lo strumento Autoscaler attiva un evento di scalabilità automatica solo se il valore della metrica è superiore al limite superiore o inferiore al limite inferiore.
Lo scopo di questo parametro è evitare l'attivazione di eventi di scalabilità automatica per piccole fluttuazioni del carico di lavoro intorno alla soglia, riducendo la quantità di fluttuazione nelle azioni del gestore della scalabilità automatica. La soglia e il margine insieme definiscono il seguente intervallo, in base al valore che vuoi assegnare alla metrica:
[threshold - margin, threshold + margin]
Più piccolo è il margine, più ristretto è l'intervallo, con una maggiore probabilità di attivazione di un evento di scalabilità automatica.
La specifica di un parametro di margine per una metrica è facoltativa e il valore predefinito è di cinque punti percentuali prima e sotto il parametro.
Suddivisioni dei dati
Spanner assegna intervalli di dati chiamati split a nodi o suddivisioni di un nodo chiamate unità di elaborazione. Il nodo o le unità di elaborazione gestiscono e pubblicano in modo indipendente i dati nelle suddivisioni ripartite. Le suddivisioni dei dati vengono create in base a diversi fattori, tra cui il volume di dati e i pattern di accesso. Per maggiori dettagli, consulta Spanner - schema e modello di dati.
I dati sono organizzati in suddivisioni e Spanner gestisce automaticamente le suddivisioni. Pertanto, quando lo strumento di scalabilità automatica aggiunge o rimuove nodi o unità di elaborazione, deve concedere al backend di Spanner tempo sufficiente per riassegnare e riorganizzare le suddivisioni man mano che viene aggiunta o rimossa nuova capacità dalle istanze.
Lo strumento Autoscaler utilizza periodi di attesa sia per gli eventi di scale up che per quelli di scale down per controllare la velocità con cui può aggiungere o rimuovere nodi o unità di elaborazione da un'istanza. Questo metodo consente all'istanza il tempo necessario per riorganizzare le relazioni tra note di calcolo o unità di elaborazione e le suddivisioni dei dati. Per impostazione predefinita, i periodi di attesa per l'aumento e la riduzione della scala sono impostati sui seguenti valori minimi:
- Valore di scalabilità: 5 minuti
- Valore di riduzione: 30 minuti
Per ulteriori informazioni sui suggerimenti per la scalabilità e sui periodi di attesa, consulta Scalare le istanze Spanner.
Prezzi
Il consumo di risorse dello strumento di scalabilità automatica è ridotto in termini di calcolo, memoria e archiviazione. A seconda della configurazione dell'autoscalabilità, quando viene eseguito il deployment nelle funzioni Cloud Run, l'utilizzo delle risorse dell'autoscalabilità rientra in genere nel livello gratuito dei servizi dipendenti (funzioni Cloud Run, Cloud Scheduler, Pub/Sub e Firestore).
Utilizza il Calcolatore prezzi per generare una stima dei costi dei tuoi ambienti in base all'utilizzo previsto.
Passaggi successivi
- Scopri come eseguire il deployment dello strumento di scalabilità automatica nelle funzioni Cloud Run.
- Scopri come eseguire il deployment dello strumento Autoscaler in GKE.
- Scopri di più sulle soglie consigliate di Spanner.
- Scopri di più sulle metriche di utilizzo della CPU e sulle metriche di latenza di Spanner.
- Scopri le best practice per la progettazione dello schema di Spanner per evitare hotspot e per caricare i dati in Spanner.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.