ETCD Alta Disponibilidad
ETCD es una base de datos de clave-valor segura, rápida y simple.
Generalmente una base de datos guarda los datos en forma de tabla. 
Pero ETCD guarda los datos en forma de documento o páginas. Esto significa que cada individuo en la tabla tiene su archivo de clave-valor. Alterar cada uno de los documentos no altera otros archivos.

ETCD opera de manera distribuida, pero ¿cómo exactamente funciona esto?
Tanto la lectura como la escritura pueden ser realizadas en cualquiera de las instancias de ETCD, con la garantía de que los datos entre ellas permanecerán consistentes. Mientras la lectura no presenta dificultades, el proceso de escritura merece una explicación más detallada.
En un cluster ETCD, una de las instancias es designada como líder (leader), mientras que las demás son seguidoras (followers). Cuando una solicitud de escritura se envía directamente al líder, este la ejecuta automáticamente y replica los datos para los seguidores. En el caso de una escritura realizada en un endpoint de un seguidor, este recibe la solicitud, la envía al líder para ser procesada y luego replica los datos actualizados para los otros miembros del cluster.
Una escritura solo se considera completa cuando es replicada con éxito para la mayoría de los miembros del cluster. Este mecanismo es viabilizado por el Raft Consensus, un algoritmo utilizado por ETCD, que puedes conocer mejor a través de este enlace.
En resumen, para garantizar la resiliencia del sistema, el Raft Consensus exige la presencia de al menos tres instancias de ETCD, evitando así puntos únicos de falla.
| Num Nodos | Puntos de falla | Mayoría (Nodos/2 +1) | Utilizable |
|---|---|---|---|
| 1 | 0 | 1 | Sí, pero no recomendado |
| 2 | 0 | 2 | No |
| 3 | 1 | 2 | Sí |
| 4 | 1 | 3 | No |
| 5 | 2 | 3 | Sí |
| 6 | 3 | 4 | No |
| 7 | 3 | 4 | Sí |
Es importante resaltar que el número de instancias en el cluster de ETCD necesita ser impar y mayor que 3 para al menos 1 punto de falla.
Cuando el líder se vuelve indisponible, se inicia una votación para elegir un nuevo líder. Cada instancia en el cluster se propone asumir el papel de líder, y la votación se basa en el tiempo. Cada instancia genera un tiempo aleatorio y comunica a los demás que se está proponiendo ser el nuevo líder. La instancia que genere el menor tiempo será la primera en comunicar y asumir el liderazgo.
Si un seguidor queda indisponible en un cluster de 3, es crucial que al menos el líder y otro seguidor puedan replicar los datos, garantizando así la mayoría (2 en 3) para mantener la consistencia de los datos.
Para que una escritura sea considerada exitosa, no es necesario que todos los miembros del cluster reciban la replicación de los datos, sino la mayoría. Cuando un seguidor retorna a la disponibilidad, los datos son sincronizados con él.