Déploiement d’un cluster Docker Swarm dans Azure

October 12, 2015 -

Docker Swarm est un outil qui permet d’orchestrer le déploiement de conteneurs Docker au sein d’un cluster. L’idée étant d’exécuter des commandes Docker comme vous le feriez sur un hôte Docker classique, mais de distribuer automatiquement ces commandes sur les différents nœuds du cluster.

Azure Resource Manager (ARM) permet - entre autre - de déployer une solution composée de plusieurs machines et/ou services Microsoft Azure, depuis le portail Preview à partir d’un fichier JSON qui en décrit la structure. De nombreux templates sont à votre disposition sur GitHub, pour vous aider à démarrer plus vite ou à construire les vôtres. (Si vous n’êtes pas encore familier avec ARM, je vous invite à lire cette page)

Récemment, un template qui permet de déployer un cluster Docker Swarm a été rendu disponible (ici). Il permet de déployer deux groupes de haute disponibilité au sein d’un même réseau virtuel :

  • Un pour les masters Swarm (au total 3), derrière un load balancer
  • Un pour les nœuds Swarm (nombre de machines à définir au moment du déploiement du template), également derrière un load balancer, mais non exposé sur Internet

Vous trouverez une description complète du cluster qui est déployé par le template sur la page GitHub, directement.

Avant de le déployer, il faut vous assurer de posséder une clé SSH, pour pouvoir vous y connecter ensuite. Si vous êtes sur Linux ou MacOS X, cette étape est un détail. Si vous êtes sous Windows, je vous invite à télécharger Git for Windows, qui vous permettra d’installer automatiquement des outils vous permettant la génération de cette clé, puis d’établir ensuite une connexion SSH depuis la ligne de commande.

Une fois installé, il vous suffit de lancer Git Bash, de taper la commande suivante, et de vous laisser guider :

>  ssh-keygen.exe

Une clé privée et une clé publique seront alors générée et placées pour vous dans le dosser “.ssh” de votre répertoire utilisateur. La clé publique vous sera demandée lors de la création du cluster Swarm.

Rendez-vous sur la page du template sur GitHub et cliquez sur le bouton “Deploy to Azure”.

image

Lorsque cela vous est demandé, authentifiez-vous avec votre compte Azure, et vous devriez alors vous retrouver sur une page vous demandant la saisie de différents paramètres :

image

Concrètement, il vous faut saisir :

  • le nom d’un compte de stockage à créer
  • le nom d’utilisateur / administrateur qui pourra se connecter au cluster
  • votre clé publique SSH (à préfixer avec ssh-rsa <VOTRE CLE PUBLIQUE>)
  • Le nombre de nœuds Swarm que vous souhaitez créer

Choisissez / créez un groupe de ressources dans lequel le cluster doit être déployé, acceptez les conditions et validez en cliquant sur le bouton Créer.

Une fois le déploiement terminé, vous devriez voir les différents éléments qui ont été créés pour vous :

 image

image

Le template a été configuré de manière à ce que les noeuds du cluster Swarm ne soient pas directement accessibles sur Internet (pas d’IP publique). Pour vous y connecter, il faut donc passer par l’un des master (port 2200, 2201 ou 2202) sur le DNS <nom_dns_renseigné_à_la_création>-manage.<location>.cloudapp.azure.com. Par exemple, si vous avez choisi le nom DNS swarmcluster à la création et que vous avez déployé le cluster dans le data center West Europe, vous pouvez alors vous connecter au master grâce à la commande :

> ssh -A nom_utilisateur@swarmcluster-manage.westeurope.cloudapp.azure.com

Vous pouvez alors ensuite exécuter la commande suivante pour récupérer des infos sur les nœuds Docker qui sont disponibles :

> docker -H tcp://localhost:2375 info

image

Il ne vous reste plus qu’à déployer des conteneurs dans le cluster. A chaque fois que vous allez demander le déploiement d’un conteneur, Swarm va automatiquement sélectionner un nœud du cluster dans lequel le déployer. Par exemple, si vous tapez 2 fois la commande suivante :

> docker -H tcp://localhost:2375 run -d -p 80:80 nginx

Puis :

> docker -H tcp://localhost:2375 ps -a

Vous pourrez alors constater que deux conteneurs basés sur l’image Nginx ont été démarrés, sur deux nœuds différents du cluster:

image

Le tour est joué, votre cluster Docker Swarm est en ligne !

A+

Julien

Comments

Share

Tags


Twitter


RT @seanmckmsft: We now have a feedback forum for #AzureKubernetesService at https://t.co/0isxSTIwhc. Please use this for feature requests…

July 21, 2018 07:20

Azure Container Registry Build Supports All Windows Versions (Preview of Preview) https://t.co/OCkqVP4S9v

July 19, 2018 09:53

How #Microsoft has evolved under Satya Nadella https://t.co/b2e9B6wWu0

July 19, 2018 09:33

@serbrech you've made my day! :)

July 16, 2018 07:07

RT @brendandburns: The @kubernetesio extension for @code now supports creating/integrating minikube clusters from the editor! (and a prett…

July 11, 2018 21:12

Un début de journée normal avec @SFR! @SFR_SAV je vous ai déjà contacté en privé. J'attends un remboursement pour l… https://t.co/6TxfWSJyzJ

July 11, 2018 05:22

@benjguin Moi je tourne à la bière belge ;-)

July 10, 2018 19:25

Introducing Dev Spaces for @Azure #Kubernetes Service https://t.co/nleSg9UrW0

July 10, 2018 10:16

RT @AbelSquidHead: Did you know you can create public projects in #VSTS now? Cool stuff!! https://t.co/IhdCfmNVEx

July 07, 2018 12:19

@SFR_SAV Vous ne pourrez rien me dire de plus que le service téléphonique, autant continuer en public que les gens… https://t.co/UxGr9SVVkW

July 06, 2018 17:28

@philippep92 @petitpatapouf @SFR_SAV @Laurent_MAILLOT @LafibreOrange Preneur ici aussi #Orange, on a voté l'autoris… https://t.co/6DmO566rR5

July 06, 2018 17:25

@philippep92 @petitpatapouf @SFR_SAV @Laurent_MAILLOT Idem dans le 94 à Gentilly. Le service client @SFR_SAV m'a di… https://t.co/eBF3N4H8PH

July 06, 2018 17:11

.@60millions @UFCquechoisir @Arcep est-ce qu'il y a des actions en cours pour régler les problèmes de qualité #SFRhttps://t.co/ZAsoN6POo6

July 06, 2018 16:54

A tous les gens qui ont des soucis avec #SFR, appelez le service client (@SFR / 1023), ils sont obligés de vous déd… https://t.co/1hkWgjjklV

July 06, 2018 16:51

Encore une panne générale de #SFR... Réponse de @SFR_SAV au téléphone: "on est en train de migrer nos clients ADSL… https://t.co/kQaE9pcC7T

July 06, 2018 16:49