Consul - Trabajar con microservicios
En este capítulo, entenderemos cómo funcionan los microservicios con Consul. También aprenderemos cómo afectan los siguientes componentes a Consul.
- Utilizando Docker
- Registrador de edificios para descubrimiento de servicios
- Usando rkt y Nomad
Analicemos ahora cada uno de estos en detalle.
Usando Docker
Antes de empezar, please do not use this setup in productionya que se utiliza solo con fines de demostración. Docker es un servicio basado en contenedores mediante el cual podemos implementar fácilmente nuestras aplicaciones. Para usar Consul, usaremos la imagen en el siguiente enlace –0
https://hub.docker.com/r/progrium/consul/.
Se supone que su sistema tiene Docker instalado y configurado correctamente. Intentemos bajar la imagen del centro de Docker, ejecutando el siguiente comando:
$ docker pull progrium/consul
La salida sería como se muestra en la siguiente captura de pantalla.
Vamos a publicar algunas interfaces con sus puertos (usando la opción -p en Docker) de la siguiente manera.
- 8400 (RPC)
- 8500 (HTTP)
- 8600 (DNS)
Además, según la extracción realizada, vamos a establecer el nombre del nombre de host como node1.Puedes cambiarlo a lo que quieras usando el -h flag con algún nombre de host propio como se muestra a continuación.
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap
La salida sería como se muestra en la siguiente captura de pantalla.
También puede habilitar el modo UI para el Consul usando -
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui
Puede comprobar la salida basada en la interfaz de usuario en http://localhost:8500. La siguiente captura de pantalla le da una mejor idea sobre la salida basada en la interfaz de usuario.
Para usar consul sobre varios contenedores de Docker en diferentes nodos, podemos ejecutar los siguientes comandos en diferentes nodos:
En el nodo 1
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
Dónde, -bootstrap-expect 3 significa que el servidor de consul esperará hasta que haya 3 pares conectados antes de autoarrancarse y convertirse en un clúster de trabajo.
Antes de continuar, necesitamos obtener la IP interna del contenedor inspeccionando el contenedor. Para nuestro uso, propósito del caso, vamos a declarar el$ JOIN_IP.
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
En Node2
Entonces, iniciemos el Nodo2 y le digamos que se una al Nodo1 usando la variable declarada en el programa dado arriba.
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
En Node3
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
Registrador de edificios para descubrimiento de servicios
Registrator registra y cancela automáticamente los servicios de cualquier contenedor Docker al inspeccionar los contenedores a medida que se conectan. El registrador que estamos a punto de usar actualmente admite registros de servicio conectables, que actualmente incluyenConsul, Etcd y SkyDNS2. Se recomienda encarecidamente el uso de Registrator cuando interactuamos con diferentes servicios a través de la red.
$ docker pull gliderlabs/registrator:latest
La salida sería como se muestra en la siguiente captura de pantalla.
$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500
La salida sería como se muestra en la siguiente captura de pantalla.
El resultado que ha recibido es el ID del contenedor de Docker que acaba de iniciar. Puede verificar si el contenedor se está ejecutando o no usando el comando:
$ docker ps -a
La salida sería como se muestra en la siguiente captura de pantalla.
También puede ver los registros de Registrator mediante el siguiente comando.
$ docker logs registrator
Usando rkt y Nomad
El rkt es otro servicio basado en contenedores, que puede utilizar en su entorno. Esta construido porCoreOS. La razón principal para construir rkt fue mejorar la seguridad, que fue uno de los problemas de crisis para Docker cuando todavía estaba en desarrollo en 2013-14.
En cuanto a Consul, podemos usar Rkt Registrator para trabajar en el descubrimiento de servicios con Consul. Este proyecto de registrador en particular, que está cubierto por rkt, está en desarrollo ynot recommended for production level use.
Puede verificar si rkt está instalado o no, yendo a su ruta y ejecutando el siguiente comando.
$ ./rkt
Puede verificar la salida para verificar si está correctamente instalada o no, como se muestra en la siguiente captura de pantalla.
Para probar rkt y Consul, consulte: https://github.com/r3boot/rkt-registrator.
Herramienta nómada
Una de las opciones favoritas y más utilizadas es la herramienta Nomad. Nomad es una herramienta para administrar un grupo de máquinas y ejecutar aplicaciones en ellas. Esto es similar aMesos o Kubernetes. De forma predeterminada, Nomad cubre el controlador Docker y rkt dentro de sí mismo. Entonces, si está buscando una implementación a gran escala de contenedores con Consul. Nomad podría ser una buena solución. Salida -https://www.nomadproject.io/docs/drivers/rkt.html para obtener más información sobre Nomad.