Maison  >  Article  >  Tutoriel système  >  Ajoutez des nœuds de travail au moteur Docker Swarm !

Ajoutez des nœuds de travail au moteur Docker Swarm !

WBOY
WBOYavant
2023-12-28 11:05:141106parcourir
Présentation Poursuivons le travail que nous avons commencé il y a quelques semaines dans CentOS 7.2. Dans ce guide, nous avons appris comment initialiser et lancer les fonctionnalités natives de clustering et d'orchestration intégrées à Docker 1.12. Mais nous n'avons que le nœud gestionnaire et aucun autre nœud travailleur. Aujourd'hui, nous allons développer cela.

Je vais vous montrer comment ajouter des nœuds asymétriques à Sawrm, comme un Fedora 24 à côté de CentOS, et ils rejoindront tous les deux le cluster, avec tout l'impressionnant équilibrage de charge et tout ça. Bien sûr, ce ne sera pas un jeu d'enfant et nous rencontrerons quelques obstacles, donc cela devrait être plutôt amusant.
Docker 引擎的 Swarm中添加工作者节点!

Teaser

Prérequis

Avant d’ajouter avec succès d’autres nœuds à Swarm, nous devons faire plusieurs choses. Idéalement, tous les nœuds devraient exécuter la même version de Docker, qui devrait être au moins 1.12 pour prendre en charge les capacités d'orchestration natives. Comme CentOS, le référentiel intégré de Fedora ne dispose pas de la dernière version de build, vous devez donc le construire manuellement ou utiliser le référentiel Docker pour ajouter et installer manuellement la version correcte et résoudre certains conflits de dépendances. Je vous ai déjà montré comment le faire dans CentOS et le processus est le même.
De plus, tous les nœuds doivent pouvoir communiquer entre eux. Cela nécessite des règles de routage et de pare-feu correctes afin que les gestionnaires et les nœuds de travail puissent communiquer entre eux. Sinon, vous ne pouvez pas ajouter le nœud à Swarm. La solution la plus simple consiste à effacer temporairement les règles du pare-feu (iptables -F), mais cela peut compromettre votre sécurité. Assurez-vous de bien comprendre ce que vous faites et de créer les règles correctes pour vos nœuds et ports.

Réponse d'erreur du démon : le délai d'attente a été atteint avant que le nœud ne soit rejoint. La tentative de rejoindre l'essaim se poursuivra en arrière-plan. Utilisez la commande "docker info" pour voir l'état actuel de l'essaim de votre nœud.

Réponse d'erreur du démon : le nœud a expiré avant de rejoindre. Les tentatives pour rejoindre l’Essaim se poursuivront en arrière-plan. Utilisez la commande « docker info » pour afficher l’état actuel de Swarm du nœud.

Vous devez fournir la même image Docker sur la machine hôte. Dans le tutoriel précédent, nous avons créé une image Apache, vous devez faire de même sur vos nœuds de travail ou distribuer l'image créée. Si vous ne le faites pas, vous rencontrerez des erreurs. Si vous avez besoin d'aide pour configurer Docker, lisez mon guide d'introduction et mon didacticiel Web.

7vwdxioopmmfp3amlm0ulimcu \_ websky.11 my-apache2:latest
localhost.localdomain Shutdown Rejected 7 minutes ago
"No such image: my-apache2:lat&"
Commencez maintenant

Nous avons maintenant une machine CentOS démarrée et le conteneur a été créé avec succès. Vous pouvez vous connecter au service en utilisant le port hôte et tout semble bien. Actuellement, votre Swarm n’a que des managers.
Docker 引擎的 Swarm中添加工作者节点!

Gérant

Rejoignez un travailleur

Pour ajouter de nouveaux nœuds, vous devez utiliser la commande join. Mais vous devez d'abord fournir le jeton, l'adresse IP et le port afin que le nœud de travail puisse s'authentifier correctement auprès du gestionnaire Swarm. Puis (sur Fedora) exécutez :

[root@localhost ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \
192.168.2.100:2377

Si vous ne corrigez pas votre pare-feu et vos règles de routage, vous obtiendrez des erreurs de délai d'attente. Si vous avez déjà rejoint le Swarm, vous recevrez une erreur si vous répétez la commande join :

Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.

En cas de doute, vous pouvez quitter Swarm et réessayer :

[root@localhost ~]# docker swarm leave
Node left the swarm.
docker swarm join --token
SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377
This node joined a swarm as a worker.

Dans le nœud Worker, vous pouvez utiliser les informations du docker pour vérifier l'état :

Swarm: active
NodeID: 2i27v3ce9qs2aq33nofaon20k
Is Manager: false
Node Address: 192.168.2.103
Likewise, on the manager:
Swarm: active
NodeID: cneayene32jsb0t2inwfg5t5q
Is Manager: true
ClusterID: 8degfhtsi7xxucvi6dxvlx1n4
Managers: 1
Nodes: 3
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: 192.168.2.100
Créer ou faire évoluer un service

Maintenant, nous devons voir si et comment Docker distribue les conteneurs entre les nœuds. Mes tests démontrent un algorithme d'équilibrage assez simple sous des charges très légères. Après l'avoir essayé une ou deux fois, Docker ne réaffectait pas les services en cours d'exécution aux nouveaux travailleurs, même après avoir essayé de faire évoluer et de mettre à jour. De même, à un moment donné, il crée un nouveau service sur le nœud travailleur. C'est peut-être la meilleure option.
Docker 引擎的 Swarm中添加工作者节点!

Service de balance

Docker 引擎的 Swarm中添加工作者节点!

Service ls

Docker 引擎的 Swarm中添加工作者节点!

Services ls, plus

Docker 引擎的 Swarm中添加工作者节点!

Créez complètement un nouveau service sur un nouveau nœud de travail.

Au bout d'un certain temps, il y a eu une certaine redistribution des services existants entre les deux conteneurs, mais cela a pris du temps. Le nouveau service fonctionne bien. Ce n’est qu’une première observation, je ne peux donc pas en dire plus pour le moment. Il est maintenant temps de commencer à explorer et à vous ajuster.
Docker 引擎的 Swarm中添加工作者节点!

L'équilibrage de charge a fonctionné après un certain temps.

Résumé

Docker est une petite bête agile qui continue de croître, devenant plus complexe, plus puissante et bien sûr plus élégante. Ce n’était qu’une question de temps avant qu’elle ne soit engloutie par une grande entreprise. Le mode Swarm fonctionne bien lorsqu’il apporte des capacités d’orchestration natives, mais au lieu de seulement quelques conteneurs, il tire pleinement parti de ses algorithmes et de son évolutivité.

Mon tutoriel montre comment ajouter un nœud Fedora à un cluster fonctionnant sur CentOS et faire fonctionner les deux en parallèle. Il reste encore quelques questions concernant l'équilibrage de charge, mais c'est quelque chose que j'explorerai dans un prochain article. Dans l’ensemble, j’espère que c’est une leçon qui mérite d’être rappelée. Nous avons passé en revue certaines des conditions préalables et des problèmes courants que vous pourriez rencontrer lorsque vous essayez de configurer Swarm, nous avons lancé un certain nombre de conteneurs et nous avons même brièvement expliqué comment faire évoluer et distribuer les services. N'oubliez pas que ce n'est que le début.

Bravo.

À propos de l'auteur :

Je suis Igor Ljubuncic. Aujourd'hui âgé d'environ 38 ans, marié mais pas d'enfants. Je travaille maintenant en tant qu'ingénieur en chef dans une entreprise de technologie cloud audacieuse et innovante. Jusqu'au début 2015 environ, je travaillais en tant qu'ingénieur en architecture de systèmes dans l'une des plus grandes sociétés informatiques au monde, travaillant avec une équipe d'ingénierie informatique pour développer de nouvelles solutions basées sur Linux, optimiser le noyau et résoudre les problèmes Linux. Avant cela, j'étais responsable technique d'une équipe concevant des solutions innovantes pour les environnements informatiques hautes performances. Il existe d'autres titres sophistiqués, notamment ceux de spécialiste des systèmes, de programmeur système, etc. Tous ces éléments étaient autrefois mes passe-temps, mais depuis 2008, ils sont devenus mon travail rémunéré. Quoi de plus satisfaisant ?

De 2004 à 2008, j'ai gagné ma vie en travaillant comme physicien dans le secteur de l'imagerie médicale. Mon expertise professionnelle se concentre sur la résolution de problèmes et le développement d'algorithmes. Pour ce faire j'utilise beaucoup Matlab, principalement pour le traitement du signal et de l'image. De plus, je suis certifié dans plusieurs méthodologies d'ingénierie majeures, notamment MEDIC Six Sigma Green Belt, la conception d'expériences et l'ingénierie statistique.

J'ai également commencé à écrire des livres, à la fois fantastiques et techniques sur Linux. Se mélanger les uns aux autres.

Pour voir la liste complète de mes projets, publications et brevets open source, faites défiler ci-dessous.

Veuillez attendre la liste complète de mes récompenses, nominations et certifications liées à l'informatique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer