Configurar GNU/Linux para usar forward DNS y el servidor DNS de Consul
Escrito por
el .
planeta-codigo
gnu-linux
Enlace permanente
Comentarios
Una de las cuestiones que tenía pendiente de mirar sobre Consul es como hacer que un nodo con GNU/Linux pueda acceder al catálogo de servicios mediante la interfaz DNS que ofrece Consul. Para esto es necesario configurar el forward DNS.
Quizá las aplicaciones no se pueden modificar para integrarse directamente con Consul por su antigüedad o no hay tiempo ni personas para hacerle esos grandes cambios, una forma sencilla que no requiere grandes cambios en las aplicaciones y que les da acceso a algunas de las funcionalidades que proporciona Consul es utilizar su servicio DNS.
Configurar que el nodo donde se ejecuta un servicio pueda acceder al catálogo de servicios de Consul mediante la interfaz DNS requiere configurar el forward DNS en la configuración de red.
Contenido del artículo
El servidor Consul
Consul es una herramienta desarrollada por Hashicorp centrada en la conectividad entre los servicios. Ofrece varias funcionalidades específicas para las aplicaciones compuestas de múltiples servicios. Consul proporciona una catálogo de servicios actualizado y con información del estado de los servicios, conectividad entre los servicios con el service mesh y almacenamiento clave-valor para la configuración de aplicaciones.
Algo ya he comentado en varios artículos sobre Consul y otros productos de Hashicorp como Vault y Nomad.
Consul además a través de su API el catálogo de los servicios lo ofrece mediante un servidor DNS propio. Los servicios del catálogo se añaden a su servidor DNS con el sufijo consul, los servicios registrados en Consul tienen un nombre de dominio con la siguiente estructura. Consul se encarga de que en una consulta solo se devuelvan los servicios que han respondido correctamente al healthcheck y devolver todas las instancias de un mismo servicio si hay varias en varios nodos.
- web.service.consul para los servicios.
- web.query.consul para las consultas.
Con las consultas o queries es posible crear filtros específicos por varios criterios y obtener los servicios que coincidan con la consulta, pero las consultas dan para otro artículo. En este artículo con el servidor DNS que ofrece Consul la cuestión es cómo hacer que en GNU/Linux uno de esos dominios sea resuelto para lo que hay que configurar el forward DNS.
Configurar en GNU/Linux el forward DNS al servicio DNS de Consul
El número puerto estándar del servicio DNS es el 53, en GNU/Linux los servicios en el número de puerto menor de 1024 requiere permisos de root que por seguridad es algo que no se desea ejecutar Consul.
Consul ofrece el servicio de DNS en el puerto 8600 con lo que para ejecutar consul sin permisos de root es necesario redirigir las consultas de DNS al puerto 8600. Esta redirección en GNU/Linux se puede hacer de dos formas con systemd-resolver o con dnsmasq. A continuación muestro la configuración para la opción con systemd-resolver y NetworkManager.
Redirigir peticiones DNS de los dominios a Consul
En Arch Linux el gestor de red que utilizo es NetworkManager, el primer paso para la configuración es hacer que NetworkManager también utilice systemd-resolved para la resolución de las consultas DNS. Hay que crear el siguiente archivo de configuración /etc/NetworkManager/conf.d/dns.conf.
|
|
El segundo paso es configurar systemd-resolved para que redirigir las consultas de DNS de los dominios con el sufijo consul al servidor DNS de Consul, en esta configuración se especifica la dirección IP del servidor de Consul que será la local y el puerto. Hay que editar el archivo /etc/systemd/resolved.conf.
|
|
Con la configuración realizada hay que iniciar y habilitar el servicio systemd-resolved y recargar la configuración de NetworkManager.
|
|
Ahora es posible acceder a la interfaz de la consola web de Consul con el dominio en vez de con la dirección IP.
También es posible hacer un ping y el dominio se resolverá a la dirección IP. Y obtener información del dominio con los comandos dig y nslookup.
|
|
|
|
|
|
|
|