Maison > Article > Tutoriel système > Ajoutez des nœuds de travail au moteur Docker Swarm !
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.
Teaser
PrérequisAvant 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.
Gérant
Rejoignez un travailleurPour 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.100Cré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.
Service de balance
Service ls
Services ls, plus
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.
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!