Cos'è etcd

Immagine di copertina

Cos’è etcd

etcd è un datastore open source basato su coppie chiave-valore utilizzato per gestire e archiviare i dati che aiutano un sistema distribuito -come un cluster- a rimanere in esecuzione correttamente.

etcd è conosciuto principalmente per essere uno dei componenti chiave di Kubernetes, dal momento che memorizza i dati relativi allo stato, alla configurazione e ai metadati di Kubernetes.

Questo componente viene considerato l’unica fonte di verità rispetto allo stato del cluster.

Caratteristiche principali

Replicazione e coerenza

Tra le tante caratteristiche, etcd è replicato: questo vuol dire che ogni nodo del cluster ha pieno accesso al datastore e ai suoi dati.

etcd è anche coerenza: tutti i dati letti in un cluster rappresentano la situazione attuale dello stato del cluster.

In un cluster etcd -per un momento abbandoniamo Kubernetes- immaginiamo di avere quattro nodi, di cui uno rappresenta il nodo leader e gli altri sono i follower.

Essendo un datastore che memorizza i dati sotto forma di chiave-valore, ognuno di essi avrà memorizzati dei dati che usano questo formato.

Immaginiamo, ad esempio, che all’interno di etcd sia memorizzata una coppia la cui chiave è 1 e il cui valore è 33:

Quando arriva una nuova richiesta da un client, questa transita verso uno qualsiasi dei nodi: se si tratta proprio del nodo leader, questo comunicherà l’aggiornamento ai suoi follower e attenderà che tutti abbiano aggiornato l’informazione a quella dello stato richiesto -il tutto avviene in pochi millisecondi!-.

Una request può arrivare anche a un nodo follower, che non è detto sia coerente con la base dati attuale: se chiedesse il valore attuale della chiave 1 e questi non fosse aggiornato, non si avrà una situazione di inconsistenza. Il nodo sa di essere un follower, per cui non è autorizzato a rispondere direttamente a chi ha fatto la richiesta. Inoltrerà la request al nodo leader, il quale risponderà con l’informazione aggiornata.

Alta disponibilità

Immaginiamo che il nodo leader per qualche motivo vada in errore: chi sarà il nuovo leader?

In effetti, etcd si basa sull’algoritmo Raft, che serve a gestire il consenso in un sistema distribuito per garantirne l’alta disponibilità e un ottimo livello di performance.

Questo vuol dire che i follower potranno candidarsi all’elezione del nuovo leader e ognuno voterà in base alla disponibilità, di modo che un nuovo leader venga eletto. Il nuovo leader si occuperà di gestire anche la replicazione dei nodi e i dati presenti nel datastore non saranno in alcun modo persi.

Veloce

etcd ha una performance di circa 10.000 scritture al secondo, ma salva i dati su disco: questo vuol dire che la performance dipende da quelle del disco.

Sicuro

Trattandosi di informazioni sensibili, perché rappresentano lo stato del cluster, è importante che etcd sia anche sicuro: questo supporta TLS nonchè la possibilità di utilizzare un meccanismo di autenticazione che usi i certificati del client.

Se ti è piaciuto questo articolo, non ti dimenticare di condividere! ⬆️

Risorse utili


🔗 Leggi anche:

Conosci meglio chi ha scritto questo articolo

Serena Sensini

Ciao! Mi chiamo Serena Sensini e sono la creatrice di @ TheRedCode.it. Ho aperto questo blog nel 2021 per raccontare il mio lavoro e il mondo dell’informatica a parole semplici, in piccole pillole e alla portata di tutte le persone.

Sono un’ingegnera informatica specializzata in ambito AI & NLP. Di giorno lavoro come CTO @ Welyk e come Innovation & Emerging Technologies Leader @ Dedalus, mentre di notte scrivo e sono autrice di 5 libri -per ora-. 🖊️

Foto di Serena Sensini

Partners

Community, aziende e persone che supportano attivamente il blog

Vuoi diventare tech content creator? 🖊️

Se ti va di raccontare la tua esperienza nel mondo tech, questo è il posto giusto.

Cerchiamo voci autentiche, esempi pratici e punti di vista utili per chi legge.

Scrivici a collaborazioni[at]theredcode.it con una proposta: idea, taglio del contenuto e una breve presentazione. Non vediamo l'ora di leggere la tua esperienza!

Invia la tua idea