Cónsul - Introducción
Consul es una herramienta basada en Hashicorp para descubrir y configurar una variedad de diferentes servicios en su infraestructura. Está basado y construido en Golang. Una de las principales razones para construir Consul fue mantener los servicios presentes en los sistemas distribuidos. Algunas de las características importantes que proporciona Consul son las siguientes.
Service Discovery - Utilizando DNS o HTTP, las aplicaciones pueden encontrar fácilmente los servicios de los que dependen.
Health Check Status- Puede proporcionar cualquier número de controles de salud. Los componentes de detección de servicios lo utilizan para enrutar el tráfico lejos de los hosts en mal estado.
Key/Value Store - Puede hacer uso del almacén jerárquico de clave / valor de Consul para cualquier número de propósitos, incluida la configuración dinámica, marcación de funciones, coordinación, elección de líder, etc.
Multi Datacenter Deployment- Consul admite múltiples centros de datos. Se utiliza para construir capas adicionales de abstracción para crecer a múltiples regiones.
Web UI - Consul proporciona a sus usuarios una hermosa interfaz web mediante la cual puede ser fácil de usar y administrar todas las funciones de consul.
Descubrimiento de servicios
El descubrimiento de servicios es una de las características más importantes de Consul. Se define como la detección de diferentes servicios y protocolos de red mediante los cuales se encuentra un servicio. El uso del descubrimiento de servicios es una bendición para los sistemas distribuidos. Este es uno de los principales problemas a los que se enfrentan las industrias a gran escala de hoy con el avance de los sistemas distribuidos en su entorno.
Comparación con Etcd y Zookeeper
Cuando miramos otras herramientas de descubrimiento de servicios en este dominio, tenemos dos opciones populares. Algunos de los principales actores de la industria del software lo han estado utilizando en el pasado. Estas herramientas sonEtcd y Zookeeper.
Consideremos la siguiente tabla para comparar diferentes aspectos de cada herramienta. También entenderemos qué utiliza cada uno de ellos internamente.
Propiedades | Cónsul | Etcd | Guardián del zoológico |
---|---|---|---|
Interfaz de usuario | Disponible | ||
RPC | Disponible | Disponible | |
Chequeo de salud | API HTTP | API HTTP | TCP |
Valor clave | 3 modos de coherencia | Buena consistencia | Consistencia fuerte |
Sistema de fichas | Disponible | ||
Idioma | Golang | Golang | Java |
Cónsul - Miembros y Agentes
Los miembros del cónsul se pueden definir como la lista de diferentes agentes y modos de servidor mediante los cuales se implementa un clúster de cónsul. Consul nos proporciona una función de línea de comandos mediante la cual podemos enumerar fácilmente todos los agentes asociados con cónsul.
El agente cónsul es el proceso central de Consul. El agente mantiene la información de membresía, registra servicios, realiza comprobaciones, responde consultas, etc. Cualquier agente puede ejecutarse en uno de dos modos:Client o Server. Estos dos modos se pueden usar de acuerdo con su función según se decida al usar cónsul. El agente del cónsul ayuda proporcionándonos información, que se enumera a continuación.
Node name - Este es el nombre de host de la máquina.
Datacenter- El centro de datos en el que el agente está configurado para ejecutarse. Cada nodo debe estar configurado para informar a su centro de datos.
Server- Indica si el agente se está ejecutando en modo servidor o cliente. Los nodos del servidor participan en el quórum de consenso, almacenando el estado del clúster y manejando las consultas.
Client Addr- Es la dirección que utiliza el agente para las interfaces de cliente. Incluye los puertos para las interfaces HTTP, DNS y RPC.
Cluster Addr- Es la dirección y el conjunto de puertos utilizados para la comunicación entre los Agentes Consul en un clúster. Esta dirección debe ser accesible para todos los demás nodos.
En el próximo capítulo, entenderemos la arquitectura de Consul.