etcd è un archivio chiave-valore distribuito open source utilizzato per conservare e gestire le informazioni critiche di cui i sistemi distribuiti hanno bisogno per continuare a funzionare. In particolare, gestisce i dati di configurazione, i dati di stato e i metadati per Kubernetes, la popolare piattaforma di orchestrazione dei container.
Come tutti i workload distribuiti, i workload containerizzati hanno requisiti di gestione complessi che diventano ancora più complessi con l'aumentare delle dimensioni del workload. Kubernetes semplifica il processo di gestione di questi workload coordinando attività quali configurazione, implementazione, individuazione dei servizi, bilanciamento del carico, pianificazione dei processi e monitoraggio dello stato di salute di tutti i cluster, che possono essere eseguiti su più macchine in più sedi.
Ma per raggiungere questo coordinamento, Kubernetes ha bisogno di uno storage dei dati che fornisce un'unica e coerente fonte di verità sullo stato del sistema, tutti i suoi cluster e pod e le istanze delle applicazioni al loro interno, in un dato momento. etcd è lo storage dei dati utilizzato per creare e mantenere questa versione della verità.
etcd svolge un ruolo simile per Cloud Foundry, la Platform-as-a-Service (PaaS) open source e multicloud, ed è una valida opzione per coordinare sistemi e metadati critici tra i cluster di qualsiasi applicazione distribuita. Il nome "etcd" deriva da una convenzione di denominazione all'interno della struttura di directory di Linux: in UNIX, tutti i file di configurazione del sistema per un singolo sistema sono contenuti in una cartella chiamata "/etc"; "d" sta per "distributed".
Avere funzione di struttura portante dei dati che mantiene in esecuzione un workload distribuito è un compito di estrema importanza. Ma etcd è costruito per tale compito, progettato da zero per le seguenti qualità:
Tieni presente che, dal momento che le prestazioni di etcd dipendono prevalentemente dalla velocità del disco di storage, si consiglia vivamente di utilizzare gli SSD in ambienti etcd.
etcd è basato sull'algoritmo di consenso Raft per garantire la coerenza della memorizzazione dati su tutti i nodi di un cluster, una condizione imprescindibile per un sistema distribuito a prova di errore.
Raft raggiunge questa coerenza tramite un nodo leader eletto che gestisce la replica per gli altri nodi del cluster, chiamati follower. Il leader accetta le richieste dai client, che poi inoltra ai nodi follower. Una volta che il leader ha accertato che la maggior parte dei nodi follower hanno memorizzato ogni nuova richiesta come voce di registro, applica la voce al suo sistema di stato locale e restituisce il risultato di tale esecuzione, una "scrittura", al client. Se i follower si bloccano o i pacchetti di rete vengono persi, il leader riprova finché tutti i follower non hanno memorizzato tutte le voci di registro in modo coerente.
Se un nodo follower non riceve un messaggio dal leader entro un intervallo di tempo specificato, viene indetta un'elezione per scegliere un nuovo leader. Il follower si dichiara candidato e gli altri follower votano per lui o per qualsiasi altro nodo in base alla sua disponibilità. Una volta eletto, il nuovo leader inizia a gestire la replica e il processo si ripete. Questo processo consente a tutti i nodi etcd di mantenere copie dello storage dei dati replicate in modo coerente e altamente disponibili.
etcd è incluso tra i componenti principali di Kubernetes e funge da storage chiave-valore principale per la creazione di un cluster Kubernetes funzionante e tollerante agli errori. Il server API Kubernetes memorizza i dati di stato di ciascun cluster in etcd. Kubernetes utilizza la funzione "watch" di etcd per monitorare questi dati e riconfigurarsi quando si verificano modifiche. La funzione "watch" memorizza i valori che rappresentano lo stato reale e ideale del cluster e può iniziare una risposta quando divergono.
Per una panoramica di alto livello su come Kubernetes gestisce i cluster, servizi e nodi lavoratori, guarda il nostro video "Informazioni su Kubernetes":
etcd è stato creato dallo stesso team responsabile della progettazione di CoreOS Container Linux, un sistema operativo container ampiamente utilizzato che può essere eseguito e gestito in modo efficiente su vasta scala. Inizialmente avevano sviluppato etcd su Raft per coordinare più copie di Container Linux contemporaneamente, per garantire tempi di attività ininterrotti delle applicazioni.
Nel dicembre 2018, il team ha donato etcd alla Cloud Native Computing Foundation (CNCF), un'organizzazione neutrale senza scopo di lucro che mantiene il codice sorgente, i domini, i servizi ospitati, l'infrastruttura cloud e altre proprietà del progetto di etcd come risorse open source per la comunità di sviluppo cloud basata su container. CoreOS si è fuso con Red Hat.
Altri database sono stati sviluppati per gestire le informazioni coordinate tra cluster di applicazioni distribuite. I due database più comunemente paragonati a etcd sono ZooKeeper e Consul.
ZooKeeper è stato originariamente creato per coordinare i metadati e i dati di configurazione tra i cluster Apache Hadoop. (Apache Hadoop è un framework open source, o raccolta di applicazioni, per memorizzare ed elaborare grandi volumi di dati su cluster di hardware di base.) ZooKeeper è più datato di etcd e le lezioni apprese lavorando con ZooKeeper hanno influenzato il design di etcd.
Di conseguenza, etcd ha alcune funzionalità importanti che ZooKeeper non ha. Ad esempio, a differenza di ZooKeeper, etcd può fare quanto segue:
Consul è una soluzione di rete di servizi per sistemi distribuiti, le cui funzionalità si collocano a metà strada tra quelle di etcd e ISTIO service mesh per Kubernetes. Come etcd, Consul include uno storage chiave-valore distribuito basato sull'algoritmo Raft e supporta le application programming interfaces (API) HTTP/JSON. Entrambi offrono una configurazione dinamica dell'appartenenza al cluster, ma Consul non controlla in modo così rigoroso più versioni simultanee dei dati di configurazione e la dimensione massima del database con cui funzionerà in modo affidabile è inferiore.
Come etcd, Redis è uno strumento open source, ma le loro funzionalità di base sono diverse.
Redis è uno storage dei dati in-memory e può funzionare come database, cache o broker di messaggi. Redis supporta una maggiore varietà di tipi di dati e strutture rispetto a etcd e ha prestazioni di lettura/scrittura molto più veloci.
Ma etcd ha una tolleranza agli errori superiore, capacità di failover più efficaci e disponibilità continua dei dati e, cosa più importante, etcd persiste tutti i dati memorizzati su disco, sacrificando sostanzialmente la velocità in favore di una maggiore affidabilità e di una coerenza garantita. Per questi motivi, Redis è più adatto a fungere da sistema di caching a memoria distribuita che a memorizzare e distribuire informazioni di configurazione del sistema.
Semplifica l’accesso ai dati e automatizza la governance dei dati. Scopri la potenza dell’integrazione di una strategia di data lakehouse nella tua architettura di dati, con ottimizzazione dei costi dei workload e possibilità di scalare AI e analytics, con tutti i tuoi dati, ovunque.
Esplora la guida per i leader dei dati che desiderano creare un’organizzazione basata sui dati e ottenere un vantaggio aziendale.
Accedi alla nostra guida per imparare a utilizzare i database corretti per applicazioni, analytics e AI generativa.
Scopri come un approccio di data lakehouse aperto può fornire dati affidabili e maggior rapidità in termini di analytics ed esecuzione dei progetti di AI.
Usa le soluzioni di database di IBM per soddisfare varie esigenze di workload nell'hybrid cloud.
Esplora IBM DB2, un database relazionale che offre prestazioni, scalabilità e affidabilità elevate per l'archiviazione e la gestione di dati strutturati. È disponibile come SaaS su IBM Cloud o in self-hosting.
Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com