Tabla de contenidos
Etcd es una tienda de valor clave destinada a aplicaciones distribuidas. Su trabajo es almacenar datos críticos de forma segura. Se utiliza en Kubernetes, por ejemplo, y ofrece muchas ventajas.
Etcd es un almacén de valores clave jerárquico y distribuido (base de datos de valores clave). Fue escrito por el equipo de Core OS en Go. Ahora está administrado por Cloud Native Computing Foundation y es de código abierto.
Se desarrolló Etcd, que se ha implementado en Kubernetes desde 2014, para proporcionar espacio de almacenamiento seguro para datos críticos en aplicaciones distribuidas. El nombre está compuesto por «/ etc», el directorio para los archivos de configuración en los sistemas operativos GNU / Linux, y «d» para los distribuidos.
Aplicaciones distribuidas y etcd
Las aplicaciones distribuidas se han convertido desde hace mucho tiempo en el estándar. A ello han contribuido los triunfos de las nubes, los teléfonos inteligentes y el Internet de las cosas. Cada vez es más raro que el front-end y el back-end se ejecuten en la misma máquina física. Sin embargo, surgen algunos problemas en el área de la nube en particular: partes de las redes pueden fallar. La transferencia de datos es cara y finita.
El desarrollo y la asignación de partes de aplicaciones cada vez más pequeñas también es tedioso. Después de todo, el usuario debe saber dónde están los elementos individuales. Por lo tanto, la información modificable debe almacenarse en un lugar seguro que no se vea afectado por estos problemas. Aquí es donde entra en juego etcd.
Cómo funciona etcd
En los clústeres de aplicaciones, hay tres conceptos relevantes para administrar el almacenamiento: líderes, elecciones y términos. El grupo celebra elecciones y nombra a un líder por un período de tiempo específico. Esto maneja todas las solicitudes de almacenamiento que requieren el consentimiento del clúster.
El líder es el representante del todo. Las consultas se refieren a cambios en los datos guardados. Las consultas que no requieren consentimiento (por ejemplo, solicitudes de lectura) pueden ser respondidas de forma independiente por todos los miembros del clúster. Si el líder «muere» (cae) o ya no responde, los nodos restantes en el grupo serán reelegidos.
Los nodos individuales tienen cada uno su propio «cronómetro» que determina cuánto tiempo esperan antes de convocar una nueva elección y determinarse como candidatos. Estos períodos de tiempo difieren de un nodo a otro. El trasfondo es para que los nodos puedan intervenir como líderes lo más rápido posible si el anterior falla o si una serie completa de nodos ya no está disponible.
El sistema es inseguro porque el líder puede realizar cambios en la información almacenada por su cuenta. Aquí es donde interviene etcd. El almacén de valores clave obliga al líder a cuestionar todos los nodos con cada cambio. Para ello se utiliza el algoritmo balsa. Solo si la mayoría vota a favor de la modificación, esta podrá llevarse a cabo.
Esto es particularmente importante para las aplicaciones distribuidas: los nodos individuales del clúster pueden bloquear cambios que perjudiquen su funcionalidad. Esto asegura la estabilidad de la aplicación. Además, se minimiza el número de problemas posteriores.
Ventajas de etcd
- fácil de usar gracias a una interfaz basada en REST y JSON
- seguro a través de la autenticación de certificado SSL
- de confianza
- rápido (hasta 10,000 operaciones de escritura por segundo)
Recomendaciones de implementación
Dado que etcd escribe datos en unidades, tiene sentido trabajar con SSD. El número de nodos en un clúster debe ser impar para poder establecer siempre una mayoría. Además, por razones de rendimiento, es recomendable no trabajar con clústeres que tengan más de siete nodos.