etcd: base de datos para pares clave-valor
Los sistemas distribuidos, como las plataformas en la nube, son cada vez más importantes. Por ello, las bases de datos individuales están cediendo el paso a los clústeres flexibles y escalables. Esto plantea una serie de nuevos retos para muchos administradores: los fallos de red, los retrasos, el volumen de datos limitado, los pequeños componentes de sistemas y la seguridad del transporte de datos son algunos de los problemas más complejos que deben abordar.
Una posible solución es contar con una ubicación central para la información cambiante que sea segura, a prueba de fallos y consistente: justo lo que ofrece la práctica base de datos de clave-valor etcd.
Bajo la división Arsys Cloud Solutions, diseñamos Soluciones a tu medida.
¿Qué es etcd?
etcd es una base de datos de clave-valor distribuida, desarrollada por el equipo de CoreOS y, como muchas otras herramientas del entorno Docker, escrita en Go, el lenguaje de Google. El objetivo a la hora de desarrollarla era crear un espacio de almacenamiento seguro para los datos críticos de las aplicaciones distribuidas, que facilitara su supervisión.
Su nombre proviene de la carpeta de archivos de configuración de los sistemas operativos GNU/Linux, “/etc”, al que se añadió la “d” de distributed (en español, “distribuido”). Actualmente, la Cloud Native Computing Foundation gestiona etcd como software de código abierto.
¿Cómo funciona etcd?
Para comprender cómo funciona etcd, es importante conocer los tres términos clave del clúster de la aplicación para administrar bases de datos:
- Líder (leader)
- Elecciones (elections)
- Términos (terms)
En los sistemas basados en Raft, el clúster elige un líder por un cierto período de tiempo, que procesa todas las solicitudes de almacenamiento que están en consenso con el clúster. Cada integrante del clúster puede responder de manera independiente a las solicitudes que no requieren el consentimiento del clúster, como los accesos de solo lectura. Si el líder acepta un cambio, etcd asegura que este replique la información a los nodos sucesores. Tan pronto como estos hayan confirmado la recepción, el líder acepta el cambio.
La coordinación del líder con los nodos del clúster a través de una base de datos etcd es especialmente conveniente en el caso de las aplicaciones distribuidas. Si los cambios afectan a la funcionalidad de un nodo, este puede bloquearlos, lo que asegura que la aplicación se mantenga estable y que se minimicen los problemas posteriores.
Si el líder falla o no responde durante un período prolongado, el resto de nodos del clúster elige un nuevo líder después de cierto tiempo. El tiempo que pasa hasta que otro nodo solicita una nueva elección y se presenta como candidato varía de un nodo a otro y se determina mediante una especie de cronómetro que tiene cada uno de ellos. De esta manera, se garantiza que los nodos puedan intervenir como líderes lo más rápido posible.
El número de nodos del clúster debe ser impar para garantizar que siempre haya una mayoría. Por motivos de rendimiento, no se recomienda utilizar un clúster que tenga más de siete nodos.
Si quieres probar etcd, puedes ejecutarlo en un ordenador portátil o mediante una configuración simple en la nube. Como etcd guarda los datos en el disco duro, recomendamos encarecidamente utilizar un disco SSD. Durante la producción, debes seguir las pautas que figuran en la documentación oficial.
Ventajas de etcd
Además del hecho de que la aplicación se ejecuta de forma estable, la base de datos etcd tiene muchas otras ventajas:
- Totalmente replicable: la base de datos al completo está disponible en todos los nodos del clúster.
- Altamente disponible: las bases de datos etcd evitan fuentes de error como los problemas de hardware o los fallos de red.
- Consistente: cada proceso de lectura proporciona el último proceso de escritura en varios hosts.
- Fácil: etcd contiene una API orientada al usuario (gRPC) bien definida, basada en REST y JSON.
- Segura: etcd implementa automáticamente la transmisión segura a través de SSL/TLS. Opcionalmente, puedes utilizar la autenticación de certificado de cliente.
- Rápida: el análisis se sitúa en más de 10.000 operaciones de escritura por segundo.
- Fiable: el algoritmo Raft siempre asegura que la memoria se distribuya correctamente.
Ejemplo de etcd: caso práctico de la base de datos de clave-valor
Ya en 2014, algunos desarrolladores implementaron etcd en Kubernetes, lo que provocó que la comunidad de etcd creciera rápidamente. Proveedores de la nube como AWS, Google Cloud Platform y Azur siguieron su ejemplo, implementando etcd con éxito en sus entornos de producción.
Pero sigamos con Kubernetes, el ejemplo de etcd mencionado en primer lugar. Kubernetes en sí es un sistema distribuido que se ejecuta en un clúster desde varios dispositivos. En consecuencia, se beneficia enormemente de una base de datos distribuida como etcd, que almacena de forma segura los datos críticos. Dentro de Kubernetes, la base de datos etcd sirve como almacén de datos principal, en el que se guardan los datos de configuración, el estado y los metadatos. Si se realizan cambios, etcd garantiza que todos los nodos del clúster de Kubernetes puedan leer y escribir los datos. Al mismo tiempo, etcd monitorea el estado actual o deseado del sistema. Si los estados difieren, Kubernetes realiza los cambios necesarios para que vuelvan a alinearse.
El comando “kubectl” recupera un valor leído de la base de datos etcd. Los cambios con “kubectl apply” crean o actualizan entradas en la base de datos etcd. Si se produce una caída del sistema, los valores se cambian automáticamente en etcd.