Consul - Travailler avec des microservices

Dans ce chapitre, nous allons comprendre comment les microservices fonctionnent avec Consul. Nous apprendrons également comment les composants suivants affectent Consul.

  • Utilisation de docker
  • Registre du bâtiment pour la découverte de services
  • Utilisation de rkt et Nomad

Examinons maintenant chacun de ces éléments en détail.

Utilisation de Docker

Avant de commencer, please do not use this setup in productioncar il est utilisé à des fins de démonstration uniquement. Docker est un service basé sur des conteneurs à l'aide duquel nous pouvons facilement déployer nos applications. Pour utiliser Consul, nous allons utiliser l'image du lien suivant –0

https://hub.docker.com/r/progrium/consul/.

Il est supposé que Docker est installé et correctement configuré sur votre système. Essayons d'extraire l'image du hub Docker, en exécutant la commande suivante -

$ docker pull progrium/consul

La sortie serait comme indiqué dans la capture d'écran suivante.

Nous allons publier certaines interfaces avec leurs ports (en utilisant l'option -p sur Docker) de la manière suivante.

  • 8400 (RPC)
  • 8500 (HTTP)
  • 8600 (DNS)

Toujours selon le tirage effectué, nous allons définir le nom du nom d'hôte comme node1.Vous pouvez le changer en tout ce que vous voulez en utilisant le -h flag avec votre propre nom d'hôte comme indiqué ci-dessous.

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap

La sortie serait comme indiqué dans la capture d'écran suivante.

Vous pouvez également activer le mode UI pour le Consul en utilisant -

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui

Vous pouvez vérifier la sortie basée sur l'interface utilisateur sur http://localhost:8500. La capture d'écran suivante vous donne une meilleure idée de la sortie basée sur l'interface utilisateur.

Pour utiliser consul sur divers conteneurs docker sur différents nœuds, nous pouvons exécuter les commandes suivantes sur différents nœuds -

Sur Node1

$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3

Où, -bootstrap-expect 3 signifie que le serveur consul attendra que 3 pairs soient connectés avant de s'auto-amorcer et de devenir un cluster fonctionnel.

Avant d'aller plus loin, nous devons obtenir l'adresse IP interne du conteneur en inspectant le conteneur. Pour notre usage, à des fins de cas, nous allons déclarer le$ JOIN_IP.

$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"

Sur Node2

Alors, commençons Node2 et disons-lui de rejoindre Node1 en utilisant la variable déclarée dans le programme donné ci-dessus.

$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP

Sur Node3

$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP

Registre du bâtiment pour la découverte de services

Registrator enregistre et annule automatiquement les services de tout conteneur Docker en inspectant les conteneurs au fur et à mesure qu'ils sont en ligne. Le registraire que nous sommes sur le point d'utiliser prend actuellement en charge les registres de services enfichables, qui incluent actuellementConsul, Etcd et SkyDNS2. L'utilisation de Registrator est fortement recommandée lorsque nous interagissons avec différents services sur le réseau.

$ docker pull gliderlabs/registrator:latest

La sortie serait comme indiqué dans la capture d'écran suivante.

$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
 consul://localhost:8500

La sortie serait comme indiqué dans la capture d'écran suivante.

Le résultat que vous avez reçu est l'ID du conteneur Docker que vous venez de démarrer. Vous pouvez vérifier si le conteneur est en cours d'exécution ou non en utilisant la commande -

$ docker ps -a

La sortie serait comme indiqué dans la capture d'écran suivante.

Vous pouvez également afficher les journaux de Registrator à l'aide de la commande suivante.

$ docker logs registrator

Utilisation de rkt et Nomad

Le rkt est un autre service basé sur des conteneurs, que vous pouvez utiliser dans votre environnement. Il est construit parCoreOS. La principale raison de la construction de rkt était d'améliorer la sécurité, qui était l'un des problèmes de crise pour Docker lorsqu'il était encore en développement en 2013-14.

Quant à Consul, nous pouvons utiliser le Rkt Registrator pour travailler sur la découverte de services avec Consul. Ce projet particulier de Registrator, qui est couvert pour rkt est en cours de développement et estnot recommended for production level use.

Vous pouvez vérifier si rkt est installé ou non, en accédant à son chemin et en exécutant la commande suivante.

$ ./rkt

Vous pouvez vérifier la sortie pour vérifier si elle est correctement installée ou non comme indiqué dans la capture d'écran suivante.

Pour essayer rkt et Consul, veuillez consulter - https://github.com/r3boot/rkt-registrator.

Outil nomade

L'outil Nomad est l'une des options les plus couramment utilisées et préférées. Nomad est un outil permettant de gérer un cluster de machines et d'exécuter des applications dessus. C'est similaire àMesos ou Kubernetes. Par défaut, Nomad couvre le Docker et le pilote rkt en lui-même. Donc, si vous recherchez un déploiement à grande échelle de conteneurs avec Consul. Nomad pourrait être une bonne solution. Découvrez -https://www.nomadproject.io/docs/drivers/rkt.html pour plus d'informations sur Nomad.