Cos'è etcd
Cosa vedrai
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
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 ad 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.
Sicurezza
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 commentare e condividere! ⬇️