‫Avant d'étendre nos services pour qu'ils commencent à fonctionner sur plusieurs nœuds et que tous les
‫services se parlent, examinons quelques nouveaux concepts proposés par Swarm.
‫Le premier est un nouveau pilote de réseau appelé Overlay, et vous créez vraiment un réseau comme
‫vous en
‫avez l'habitude, vous créez un réseau Docker et vous insérez un overlay --driver.
‫En gros, cela crée un réseau de pont Swarm-wide, dans lequel les conteneurs situés sur le même réseau virtuel
‫peuvent s’accéder les uns aux autres, comme s’ils se trouvaient sur un VLAN.
‫Ceci est uniquement pour la communication intra-essaim.
‫Le pilote de superposition ne joue pas énormément dans le trafic entrant, car il tente d’obtenir une
‫vue globale du réseau afin de ne pas déranger en permanence les paramètres réseau sur
‫des nœuds individuels.
‫Vous pouvez également activer le cryptage réseau complet en utilisant IPiece SEC, qui configurera des tunnels IPSec entre
‫les différents nœuds de votre essaim.
‫Mais il est désactivé par défaut uniquement pour des raisons de performances.
‫Lorsque vous créez vos services, vous pouvez les ajouter à aucun réseau superposé, ou à un ou plusieurs réseaux superposés.
‫Cela dépend vraiment de la conception de votre application.
‫Vous savez, beaucoup de conceptions traditionnelles auraient les bases de données sur un réseau principal et
‫les serveurs Web sur un réseau frontal. Alors peut-être que vous auriez une API entre les deux qui serait sur les deux
‫réseaux, ou quelque chose comme ça.
‫Et vous pouvez totalement faire cela dans Swarm.
‫Voyons cela en action. Ce que je veux faire, c'est vous
‫montrer ce que ce serait si nous déployions l'exemple Drupal d'une affectation précédente avec la base de données Postgres, en tant que services, puis
‫créions un réseau Overlay pour qu'ils puissent se parler.
‫Nous devons d’abord créer un réseau, donc créer un réseau Docker, et cela n’a pas changé pour Swarm, à
‫part le fait que nous allons utiliser un nouveau pilote.
‫Je vais juste l'appeler mydrupal.
‫D'ACCORD.
‫Donc, je vais faire un réseau docker ls, et vous verrez que j'ai une nouvelle superposition. L'entrée est là par défaut.
‫Vous en verrez également un nouveau car il s'agit d'un essaim, qui est en réalité un réseau sortant sur lequel nous n'aurons pas besoin
‫de jouer.
‫Alors, créons notre service Postgres ... service docker créer un nom ... appelons-le réseau psql.
‫Nous allons le connecter au réseau mydrupal.
‫En fait, les noms de réseau sont complétés par des onglets.
‫Alors rappelez-vous que je dois ajouter cette variable d'environnement pour le mot de passe Postgres.
‫Nous pouvons donc nous y connecter plus tard.
‫Ensuite, nous allons utiliser l'image Postgres. Cela semble bon.
‫Vous remarquerez ici que nous ne récupérons pas l’ensemble de l’image, car les services ne peuvent pas être exécutés au premier
‫plan, car ils doivent passer par l’orchestrateur et le planificateur. Donc, nous pouvons faire un service
‫fixe, et nous pouvons voir que l’un d’eux est en cours d’exécution.
‫Si nous faisons un service de menu fixe ps psql, nous pouvons voir que cela fonctionne réellement sur le noeud 1.
‫Donc, je peux faire un journal de conteneur docker psql, et puis je peux voir les journaux de cela.
‫Oui. On dirait que ça court.
‫D'accord.
‫Créons notre autre service afin que nous
‫puissions l'appeler drupal.
‫Nous devons également nous connecter à ce même réseau. Ensuite, nous voulons publier le port 80:80 comme nous l’avons
‫fait avec une commande d'exécution de menu fixe. Et nous allons utiliser l'image Drupal.
‫D'ACCORD.
‫Nous pouvons voir que cela commence là.
‫Il y a un truc. Vous pouvez réellement utiliser la commande watch sous Linux pour regarder. Ça va fondamentalement
‫... ce qu'il fait est qu'il réexécute une commande encore et encore. Il est installé par défaut
‫sur Ubuntu.
‫Si vous placez simplement la montre devant le service fixe, elle continuera à fonctionner toutes les deux secondes par défaut jusqu'à
‫ce que ... ah, tu vois?
‫Maintenant nous en avons un par un.
‫Très bien, et ensuite je vais juste contrôler c hors de ça. Nous pouvons faire un ps de
‫service de menu fixe Drupal et voir que Drupal fonctionne réellement sur le nœud 2.
‫Nous avons la base de données en cours d'exécution sur le nœud 1.
‫Le site Web de Drupal est exécuté sur le nœud 2.
‫Alors, comment savent-ils comment se parler?
‫Eh bien, en utilisant les noms de service.
‫Si je colle l'une des adresses IP, elle devrait apparaître lors de l'installation de Drupal. Et si je lui dis la base de données ici, nom
‫de base de données, nous allons simplement refaire le postgres,
‫postgres, mon mot de passe.
‫Pour l'hôte, tout comme lorsque nous étions avec Compose, nous avons créé les noms de service dans le fichier Compose. Ici, nous allons utiliser le
‫nom de service que nous avons créé pour le serveur de base de données. Donc, c'était psql.
‫Cet écran nous dit en gros qu'il est capable de communiquer avec la base de données via les nœuds
‫et de configurer le système.
‫C'est ce qui est génial avec Overlay, c'est qu'il agit comme si tout se trouvait sur le même sous-réseau.
‫D'accord.
‫Donc, nous n'en avons plus besoin.
‫Je vais terminer cet exemple très rapidement pour vous montrer la prochaine chose intéressante à propos de Swarm. D'ACCORD.
‫Maintenant, ce site est en cours d'exécution. Mais j'ai trois nœuds, alors comment puis-je savoir sur quel nœud il va se
‫trouver et sur quel port je dois m'assurer que mon DNS pointe vers lorsque je crée ce nom de site Web?
‫Dans mon cas, j'ai trois adresses IP, et je peux les copier toutes les trois et les mettre toutes
‫les trois
‫dans et ... Oops... Je me suis trompé.
‫Donc, si vous voyez, il semble que le site Web fonctionne sur les trois nœuds, car je regarde les
‫trois adresses IP.
‫Mais si je vais ici et fais ce service ps Drupal, je sais que ce n'est que l'exécution du noeud 2.
‫Je peux même effectuer une inspection du service Docker et constater qu’il n’a qu’une adresse IP sur ce réseau en
‫superposition ... ici.
‫Alors, pourquoi répond-il sur les trois hôtes?
‫Cela nous conduit à notre prochaine nouvelle fonctionnalité.