etcd est basé sur l’algorithme de consensus Raft pour garantir la cohérence du magasin de données sur tous les nœuds d’un cluster, des enjeux de taille pour un système distribué tolérant aux pannes.
Raft parvient à cette cohérence via un nœud leader choisi qui gère la réplication des autres nœuds du cluster, appelés suiveurs. Le leader accepte les demandes des clients, qu’il transmet ensuite aux nœuds suiveurs. Une fois que le leader s’est assuré qu’une la majorité des nœuds suiveurs ont enregistré chaque nouvelle demande sous forme d’entrée de journal, il applique l’entrée à sa machine locale et renvoie le résultat de cette exécution, une « écriture », au client. Si les suiveurs tombent en panne ou si des paquets réseau sont perdus, le leader effectue d’autres tentatives jusqu’à ce que tous les suiveurs aient stocké toutes les entrées de journal de manière cohérente.
Si un nœud suiveur ne reçoit pas de message du leader dans un intervalle de temps spécifié, l’élection d’un nouveau leader a lieu. Le suiveur se déclare candidat, et les autres suiveurs votent pour lui ou pour un autre nœud en fonction de sa disponibilité. Une fois le nouveau leader choisi, il commence à gérer la réplication et le processus se répète. Ce processus permet à tous les nœuds etcd de maintenir des copies du magasin de données hautement disponibles, répliquées de manière cohérente.