Operon: accélère les performances d'Ansible


Je suis très heureux de présenter enfin Operon , le remplaçant haute performance d'Ansible Engine. Operon est conçu pour les grandes installations et est distribué par abonnement. Il lance des playbooks, des modules, des plug-ins et des outils tiers existants sans modification, à l'aide d'un moteur avancé, augmente considérablement le nombre réel de nœuds adressés en une seule exécution, ce qui permet de gagner des heures à chaque appel.


Operon est installé séparément et conjointement avec Ansible Engine: vous pouvez progressivement y transférer vos projets ou l'utiliser au démarrage si vous le souhaitez.


Ci-dessous est un graphique de l'exécution de 416 tâches common.yml de DebOps 0.7.2 déployées via SSH:



Comparé à l'opéron Ansible propre, il réduit le temps d'exécution par nœud d'environ 60%. Mais avec des lancements en masse, l'avantage est beaucoup plus grand. Découvrez comment le temps d'exploitation augmente (matériel: 24 Go, Xeon E5530 à 8 cœurs; déployé sur les machines virtuelles Google Cloud via SSH en 18 ms):



Pour chaque exécution, 416 tâches ont été effectuées sur chaque nœud, y compris les éléments de boucle. Sur une série de 1024 nœuds, 540 496 tâches ont été exécutées en 54 minutes; débit moyen - 151 tâches / seconde. La mise à l'échelle horizontale est évidente: presque 4x, de 256 à 1024 nœuds.


L'exécution d'Ansible à 256 nœuds a dû être annulée: pendant une longue période, elle n'a pas produit de résultats, elle a dû être redémarrée plusieurs fois, réduisant le nombre de processus de 40 à 10 afin qu'Ansible n'épuise pas ses ressources RAM. Cela aurait pu fonctionner avec 13 processus, mais nous avons dû refuser de nouvelles tentatives: nous avons déjà passé 2 jours de temps machine.


Pour la dernière manche, avant d'annuler, Ansible a réalisé 89% des tâches en 6 heures et 13 minutes:



Opéron déployé sur tous les nœuds lors de chaque exécution parallèle. Effectuer 1024 processus sur 8 cœurs, cela donne une augmentation à peine perceptible de la charge, et sur 24 cœurs, le nombre de processus augmente jusqu'à 6144. Si nous exécutions le même nombre de tâches sur ce nombre de nœuds, uniquement avec 16 cœurs, nous pensons que nous exécuterions terminer non pas en 54 minutes, mais en 27.


La consommation de mémoire est très prévisible et largement détachée des processus. Avec 256 processus, Operon consomme quatre fois moins que Ansible en consomme 10; en même temps, le processeur consomme au moins 15 fois moins de temps processeur.



Ici, la courbe va en déclin: Ansible s'exécute sur 64 nœuds avec 40 processus, tandis que les exécutions sur 256 nœuds s'exécutent à partir de 10. Ansible s'exécute sur 256 nœuds a pris 1,6 Go / processus; ainsi, indépendamment des ressources RAM disponibles, une restriction sévère sur le parallélisme réalisable a été créée.


Operon est une nouvelle étape dans l'approche de développement qui a fait ses débuts avec Mitogen for Ansible . Il hérite des améliorations massives des performances de bas niveau nécessaires à des milliers d'utilisateurs:




Pas seulement des logiciels


La productivité est un effet secondaire du changement culturel vers une plus grande orientation des utilisateurs, la compatibilité et l'internalisation des coûts. Nous avons quelque chose à montrer, mais pour que vous puissiez pleinement goûter au goût du nouveau produit, je suis heureux d'annoncer qu'il y aura une garantie de syntaxe de playbook avec compatibilité directe - en plus de restaurer certaines constructions obsolètes d'Ansible Engine.


inclure :


- include: "i-will-always-work.yml" 

boucles "avec"


 - debug: msg={{item}} with_items: ["i", "will", "always", "work"] 

"actions de squash"


 - apt: name: "{{item}}" with_items: ["i", "will", "always", "work"] 

tirets dans les noms de groupe


 $ cat hosts [i-will-always-work.us.mycorp.com] host1 

fusion de hachage


 # I will always work [defaults] hash_behaviour = merge 

Les expéditions d'Operon avec une syntaxe compatible avec Ansible 2.9 recevront un support continu , et la désactivation de la syntaxe dans Ansible Engine n'affectera pas Operon à l'avenir. De tels changements nuisent aux installations de travail sans améliorer leurs capacités, et ils sont la principale source de travail pour corriger les erreurs lors des mises à jour.


Au fil du temps, cette garantie s'étend à la sémantique du moteur et au-delà.


Comment adhérer?


Initialement, Operon sera distribué avec le soutien de Network Genomics , et c'est une expérience et un engagement envers un service que vous n'obtiendrez nulle part ailleurs. Si votre équipe est coincée dans le piège du déploiement ou fatiguée de réparer les mises à jour pendant des années, pensez à demander une évaluation , et sans délai, écrivez-moi un e - mail - pour toutes questions et points incompréhensibles.


Le meilleur logiciel est dans le domaine public, donc une version publique aura lieu lorsque nous serons en mesure de fournir un certain niveau de support gratuit. Abonnez-vous à notre newsletter pour être informé à temps des prochaines versions.


Operon améliorera-t-il les performances de Windows?
Oui Si vous rencontrez des problèmes de performances lors de vos déploiements Windows, restez à l'écoute pour l'instant.


Operon améliorera-t-il les performances des périphériques réseau?
Oui Operon présente une refonte architecturale qui s'étend bien au-delà de la couche de transport et est également applicable à tous les types de connexions.


Operon est-il une ramification Ansible?
Non. Operon est une réécriture incrémentielle du moteur, un petit composant d'environ 60k lignes de code, dont environ un quart a été remplacé. Chaque installation Ansible comprend environ 715 000 lignes, dont la grande majorité, comme Operon, est prise en charge indépendamment par la grande communauté Ansible.


Operon Ansible Engine s'améliorera-t-il?
Oui Operon promeut déjà une amélioration au sein d'Ansible Engine, et comme il s'agit d'un raffinement, il y a une incitation à apporter une contribution, à peaufiner le code si nécessaire.


Le logiciel est-il gratuit?
Oui Operon est publié sous la même GPL qu'Ansible, et vous pouvez utiliser librement le code sous cette licence.


Operon rompt-il la compatibilité?
Non. Operon ne viole pas la compatibilité avec l'ensemble standard de modules, les interfaces de plug-in ou l'écosystème Ansible environnant et ne prévoit pas de le violer. La compatibilité est avant tout: vous ne devez pas prendre de retard sur les améliorations futures, tout en oubliant la rétrocompatibilité, comme l'amélioration de la stabilité de la syntaxe du playbook.


Ai-je besoin d'Operon si j'ai des plans pour un seul nœud?
Operon assurera la compétitivité continue des compétences dans lesquelles vous avez tant investi. Il offre une flexibilité accrue qui n'existait pas auparavant: la liberté de choisir un moteur. Avec Operon, vous gagnez, même si vous ne l'utilisez pas directement.

Source: https://habr.com/ru/post/fr473948/


All Articles