etcd
Descubra más sobre etcd, la base de datos de valor clave de código abierto tolerante a fallas que sirve como la columna vertebral de datos principal para Kubernetes y otras plataformas distribuidas.
Base de datos
Fondo negro y azul
¿Qué es etcd?

etcd es un almacén de valor clave distribuido de código abierto que se utiliza para almacenar y gestionar la información fundamental que los sistemas distribuidos necesitan para seguir funcionando. En particular, administra los datos de configuración, los datos de estado y los metadatos de Kubernetes, la popular platafoma de orquestación de contenedores.

Como todas las cargas de trabajo distribuidas, cargas de trabajo en contenedores tienen requisitos de gestión complejos que se vuelven más complejos a medida que aumenta la carga de trabajo. Kubernetes simplifica el proceso de gestión de estas cargas de trabajo mediante la coordinación de tareas como la configuración, la implementación, el descubrimiento de servicios, el balanceo de carga, la programación de trabajos y la supervisión del estado en todos los clústeres, que pueden ejecutarse en varias máquinas en varias ubicaciones.

Pero para lograr esta coordinación, Kubernetes necesita un almacén de datos que proporcione una fuente única y consistente de la verdad sobre el estado del sistema, todos sus clústeres y pods y las instancias de aplicación dentro de ellos, en cualquier momento dado. etcd es el almacén de datos que se utiliza para crear y mantener esta versión de la verdad.

etcd cumple una función similar a Cloud Foundry (enlace externo a ibm.com), la Plataforma como servicio (PaaS) de código abierto, multinube, y es una opción viable para coordinar el sistema fundamental y los metadatos entre los clústeres de cualquier aplicación distribuida. El nombre "etcd" proviene de una convención de nomenclatura dentro de la estructura de directorios de Linux: En UNIX, todos los archivos de configuración del sistema para un solo sistema están contenidos en una carpeta llamada "/etc;" "d" significa "distribuido".

Vea el video "¿Qué es etcd?" para una saber más (6:09):

Productos destacados

Databases for etcd


¿Por qué etcd?

No es una tarea menor servir como la columna vertebral de datos que mantiene en funcionamiento una carga de trabajo distribuida. Pero etcd está hecho para eso, diseñado desde cero para las siguientes cualidades:

  • Totalmente replicado: Todos los nodos de un clúster etcd tienen acceso al almacén de datos completo.
  • Altamente disponible: etcd está diseñado para no tener un solo punto de falla y tolerar fácilmente fallas de hardware y particiones de red.
  • Confiablemente consistente: Cada "lectura" de datos devuelve la última "escritura" de datos en todos los clústeres.
  • Rápido: etcd ha sido evaluado a 10,000 escrituras por segundo.
  • Seguro: etcd admite la seguridad automática de la capa de transporte (TLS) y la autenticación de certificado de cliente de capa de conexión segura (SSL) opcional. Debido a que etcd almacena datos de configuración vitales y altamente confidenciales, los administradores deben implementar controles de acceso basados en roles dentro de la implementación y asegurarse de que los miembros del equipo que interactúan con etcd estén limitados al nivel de acceso con menos privilegios necesario para realizar sus trabajos.
  • Simple: Cualquier aplicación, desde aplicaciones web simples hasta motores de orquestación de contenedores altamente complejos como Kubernetes, puede leer o escribir datos en etcd usando herramientas HTTP/JSON estándar .

Tenga en cuenta que debido a que el rendimiento de etcd depende en gran medida de la velocidad del disco de almacenamiento, es muy recomendable utilizar SSD en entornos etcd. Para obtener más información sobre este y otros requisitos de almacenamiento de etcd, consulte "Uso de Fio para saber si su almacenamiento es lo suficientemente rápido para etcd."

 


Algoritmo de consenso raft

etcd se basa en el algoritmo de consenso de Raft para garantizar la consistencia del almacenamiento de datos en todos los nodos de un clúster: lo que está en juego para un sistema distribuido tolerante a fallas.

Raft logra esta consistencia a través de un nodo electo comolíder, que gestiona la replicación de los demás nodos del clúster, denominadosseguidores . El líder acepta solicitudes de los clientes, que luego reenvía a los nodos seguidores. Una vez que el líder ha comprobado que unamayoría de los nodos seguidores han almacenado cada nueva solicitud como una entrada de registro, aplica la entrada a su máquina de estado local y devuelve el resultado de esa ejecución, una 'escritura', al cliente. Si los seguidores se bloquean o se pierden los paquetes de red, el líder vuelve a intentarlo hasta que todos los seguidores hayan almacenado todas las entradas del registro de forma consistente.

Si un nodo seguidor no recibe un mensaje del líder dentro de un intervalo de tiempo especificado, se lleva a cabo una elección para elegir un nuevo líder. El seguidor se declara uncandidato, y los demás seguidores votan por él o cualquier otro nodo en función de su disponibilidad. Una vez que se elige al nuevo líder, comienza a gestionar la replicación y el proceso se repite. Este proceso permite que todos los nodos etcd mantengan copias del almacén de datos de alta disponibilidad y consistencia.


etcd y Kubernetes

etcd se incluye entre los componentes principales de Kubernetes y sirve como el almacén de valor clave principal para crear un clúster de Kubernetes funcional y tolerante a fallas. El servidor de la API de Kubernetes almacena los datos de estado de cada clúster en etcd. Kubernetes usa la función "watch" de etcd para monitorear estos datos y reconfigurarse cuando ocurren cambios. La función "observar" almacena valores que representan el estado real e ideal del grupo y puede iniciar una respuesta cuando divergen.

Para obtener una descripción general de alto nivel de cómo Kubernetes administra los clústeres, los servicios y los nodos de trabajo, consulte nuestro video "Explicación de Kubernetes":


CoreOS y la historia y mantenimiento de etcd

etcd fue creado por el mismo equipo responsable del diseño de CoreOS Container Linux, un sistema operativo de contenedores que se puede ejecutar y administrar de manera eficiente a gran escala. Originalmente construyeron etcd en Raft para coordinar múltiples copias de Container Linux simultáneamente, para garantizar un tiempo de actividad ininterrumpido de la aplicación.

En diciembre de 2018, el equipo donó etcd a Cloud Native Computing Foundation (CNCF), una organización neutral sin fines de lucro que mantiene el código fuente, los dominios, los servicios alojados, la infraestructura en la nube y otras propiedades del proyecto de etcd como recursos de código abierto para la comunidad de desarrollo de nube basada en contenedores. CoreOS se ha fusionado con Red Hat.

 


etcd versus ZooKeeper versus Consul

Se han desarrollado otras bases de datos para gestionar la información coordinada entre grupos de aplicaciones distribuidas. Los dos más comúnmente comparados con etcd son ZooKeeper y Consul.

ZooKeeper

ZooKeeper se creó originalmente para coordinar los datos de configuración y los metadatos en los clústeres de Apache Hadoop. Apache Hadoop (link externo a ibm.com) es un marco de código abierto, o colección de aplicaciones, para almacenar y procesar grandes volúmenes de datos en grupos de hardware básico). ZooKeeper es más antiguo que etcd, y las lecciones aprendidas al trabajar con ZooKeeper influyeron en el diseño de etcd.

Como resultado, etcd tiene algunas capacidades importantes que ZooKeeper no tiene. Por ejemplo, a diferencia de ZooKeeper, etcd puede hacer lo siguiente:

  • Permitir la reconfiguración dinámica de la pertenencia al clúster.
  • Permanecer estable mientras realiza operaciones de lectura / escritura bajo cargas elevadas.
  • Mantener un modelo de datos de control de simultaneidad de múltiples versiones.
  • Ofrecer un monitoreo de claves confiable que nunca descarte eventos sin dar una notificación.
  • Utilizar primitivas de simultaneidad que desacoplan las conexiones de las sesiones.
  • Admitir una amplia gama de idiomas y marcos (ZooKeeper tiene su propio protocolo RPC Jute personalizado que admite enlaces de idioma limitados).

Consul

Consul es una solución de redes de servicio para sistemas distribuidos, cuyas capacidades se encuentran en algún lugar entre las de etcd y las de Istio service mesh para Kubernetes. Como etcd, Consul incluye un almacén de valor clave distribuido basado en el algoritmo Raft y admite interfaces de programación de aplicaciones (API) HTTP/JSON. Ambos ofrecen una configuración de membresía de clúster dinámica, pero Consul no realiza un control tan fuerte contra múltiples versiones concurrentes de datos de configuración, y el tamaño máximo de la base de datos con el que funcionará de manera confiable es menor.


etcd versus Redis

Como etcd, Redis es una herramienta de código abierto, pero sus funcionalidades básicas son diferentes.

Redis es un almacén de datos en memoria y puede funcionar como base de datos, caché o intermediario de mensajes. Redis admite una variedad más amplia de tipos de datos y estructuras que etcd y tiene un rendimiento de lectura / escritura mucho más rápido.

Pero etcd tiene una tolerancia a fallas superior, una conmutación por error más sólida y capacidades de disponibilidad continua de datos y, lo que es más importante, etcd conserva todos los datos almacenados en el disco, sacrificando esencialmente la velocidad para una mayor confiabilidad y consistencia garantizada. Por estas razones, Redis es más adecuado para servir como un sistema de almacenamiento en caché de memoria distribuida que para almacenar y distribuir información de configuración del sistema.


etcd e IBM Cloud

IBM fue uno de los primeros en contribuir al proyecto etcd y ha apoyado el proyecto y ha continuado contribuyendo desde que CNCF lo incorporó. Uno de los nueve mantenedores del proyecto también es un empleado de IBM.

IBM ofrece IBM Cloud Databases for etcd, una solución de administración de configuración de sistemas distribuidos completamente administrada que está lista para la empresa, es altamente disponible y segura.

Comience registrándose para obtener una cuenta gratuita de IBM Cloud, y podrá configurar un clúster etcd hoy mismo.

Productos destacados


Soluciones relacionadas

IBM Cloud Databases for etcd

Descubra más acerca de IBM Cloud Databases for etcd, que ofrece un almacén de valor clave totalmente gestionado y listo para la empresa para almacenar los datos y gestionar su clúster de servidores.