Nébuleuse ouverte. Petites notes

Nébuleuse ouverte. Petites notes

Salut tout le monde. Cet article a été écrit pour ceux qui sont encore partagés entre le choix des plateformes de virtualisation et après avoir lu l'article de la série « Nous avons installé proxmox et en général tout va bien, 6 ans de disponibilité sans une seule interruption ». Mais après avoir installé l'une ou l'autre solution prête à l'emploi, la question se pose : comment puis-je corriger cela ici, pour que la surveillance soit plus compréhensible, et ici, pour contrôler les sauvegardes…. Et puis le moment vient où vous réalisez que vous voulez quelque chose de plus fonctionnel, ou que vous voulez que tout à l'intérieur de votre système devienne clair, et non cette boîte noire, ou que vous voulez utiliser quelque chose de plus qu'un hyperviseur et un tas de machines virtuelles. Cet article contiendra quelques réflexions et pratiques basées sur la plateforme Opennebula - je l'ai choisie parce que. il n'exige pas de ressources et l'architecture n'est pas si complexe.

Ainsi, comme nous le voyons, de nombreux fournisseurs de cloud travaillent sur KVM et établissent des connexions externes pour contrôler les machines. Il est clair que les grands hébergeurs écrivent leurs propres frameworks pour l'infrastructure cloud, le même YANDEX par exemple. Quelqu'un utilise openstack et établit une connexion sur cette base - SELECTEL, MAIL.RU. Mais si vous disposez de votre propre matériel et d'une petite équipe de spécialistes, vous choisissez généralement quelque chose de prêt à l'emploi - VMWARE, HYPER-V, il existe des licences gratuites et payantes, mais ce n'est pas de cela dont nous parlons maintenant. Parlons des passionnés - ce sont ceux qui n'ont pas peur d'offrir et d'essayer quelque chose de nouveau, malgré le fait que l'entreprise a clairement indiqué : « Qui s'occupera de cela après vous ? », « Allons-nous le mettre en production plus tard ? ? Effrayant." Mais vous pouvez d'abord appliquer ces solutions sur un banc de test, et si tout le monde l'apprécie, vous pouvez alors poser la question d'un développement ultérieur et d'une utilisation dans des environnements plus sérieux.

Voici également un lien vers le rapport www.youtube.com/watch?v=47Mht_uoX3A d'un participant actif au développement de cette plateforme.

Peut-être que dans cet article, quelque chose sera superflu et déjà compréhensible pour un spécialiste expérimenté, et dans certains cas, je ne décrirai pas tout car des commandes et des descriptions similaires sont disponibles sur Internet. Ceci n'est que mon expérience avec cette plateforme. J'espère que les participants actifs ajouteront dans les commentaires ce qui pourrait être mieux fait et quelles erreurs j'ai commises. Toutes les actions se sont déroulées dans un stand composé de 3 PC aux caractéristiques différentes. De plus, je n'ai pas spécifiquement indiqué comment fonctionne ce logiciel ni comment l'installer. Non, seulement l'expérience en administration et les problèmes que j'ai rencontrés. Peut-être que cela sera utile à quelqu'un dans son choix.

Alors, commençons. En tant qu'administrateur système, les points suivants sont importants pour moi, sans lesquels il est peu probable que j'utilise cette solution.

1. Répétabilité de l'installation

Il existe de nombreuses instructions pour installer opennebula, il ne devrait y avoir aucun problème. De version en version, de nouvelles fonctionnalités apparaissent qui ne fonctionneront pas toujours lors du passage de version en version.

2. Surveillance

Nous surveillerons le nœud lui-même, kvm et opennebula. Heureusement, c’est déjà prêt. Il existe de nombreuses options pour surveiller les hôtes Linux, le même Zabbix ou l'exportateur de nœuds - celui qui préfère quoi - pour le moment, je le définis comme la surveillance des métriques du système (température où elle peut être mesurée, cohérence de la baie de disques), via zabbix , et quant aux candidatures via l'exportateur Prometheus. Pour la surveillance kvm, par exemple, vous pouvez prendre le projet github.com/zhangjianweibj/prometheus-libvirt-exporter.git et configurez-le pour qu'il s'exécute via systemd, cela fonctionne plutôt bien et affiche les métriques kvm, il existe également un tableau de bord prêt à l'emploi grafana.com/grafana/dashboards/12538.

Par exemple, voici mon fichier :

/etc/systemd/system/libvirtd_exporter.service
[Unit]
Description=Node Exporter

[Service]
User=node_exporter
ExecStart=/usr/sbin/prometheus-libvirt-exporter --web.listen-address=":9101"

[Install]
WantedBy=multi-user.target

Et donc nous avons 1 exportateur, nous en avons besoin d'un deuxième pour surveiller opennebula lui-même, j'ai utilisé ceci github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter

Peut être ajouté à la normale noeud_exportateur pour surveiller le système comme suit.

Dans le fichier node_exporter, nous modifions le début comme ceci :

ExecStart=/usr/sbin/node_exporter --web.listen-address=":9102" --collector.textfile.directory=/var/lib/opennebula_exporter/textfile_collector

Créez un répertoire mkdir -p /var/lib/opennebula_exporter

script bash présenté ci-dessus, nous vérifions d'abord le travail via la console, s'il montre ce dont nous avons besoin (s'il donne une erreur, installez xmlstarlet), copiez-le dans /usr/local/bin/opennebula_exporter.sh

Ajoutez une tâche périodique pour chaque minute :

*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)

Des métriques ont commencé à apparaître, vous pouvez les prendre comme un Prométhée, créer des graphiques et créer des alertes. Dans Grafana, vous pouvez dessiner, par exemple, un tableau de bord aussi simple.

Nébuleuse ouverte. Petites notes

(c'est clair qu'ici je surcharge le processeur, la RAM)

Pour ceux qui aiment et utilisent Zabbix, il y a github.com/OpenNebula/addon-zabbix

En ce qui concerne le suivi, l'essentiel est qu'il soit là. Bien sûr, vous pouvez également utiliser les outils intégrés de surveillance des machines virtuelles et télécharger des données vers la facturation, ici chacun a sa propre vision, je n'ai pas encore commencé à y travailler de plus près.

Je n'ai pas encore vraiment commencé à me connecter. L'option la plus simple consiste à ajouter td-agent pour analyser le répertoire /var/lib/one avec des expressions régulières. Par exemple, le fichier sunstone.log correspond à l'expression rationnelle nginx et à d'autres fichiers qui affichent l'historique des accès à la plateforme - quel en est l'avantage ? Eh bien, par exemple, nous pouvons suivre explicitement le nombre d'« Erreur, erreur » et suivre rapidement où et à quel niveau il y a un dysfonctionnement.

3. Sauvegardes

Il existe également des projets terminés rémunérés - par exemple sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon:OuvrirNebula_Backup. Ici, nous devons comprendre que la simple sauvegarde d'une image de machine n'est pas du tout la même chose dans ce cas, car nos machines virtuelles doivent fonctionner avec une intégration complète (le même fichier contextuel qui décrit les paramètres réseau, le nom de la machine virtuelle et les paramètres personnalisés de vos applications) . Par conséquent, nous décidons ici quoi et comment nous allons sauvegarder. Dans certains cas, il est préférable de faire des copies de ce qui se trouve dans la machine virtuelle elle-même. Et peut-être n’avez-vous besoin de sauvegarder qu’un seul disque d’une machine donnée.

Par exemple, nous avons déterminé que toutes les machines démarrent avec des images persistantes, donc après avoir lu docs.opennebula.io/5.12/operation/vm_management/img_guide.html

Cela signifie que nous pouvons d'abord télécharger l'image depuis notre machine virtuelle :

onevm disk-saveas 74 3 prom.qcow2
Image ID: 77

Смотрим, под каким именем он сохранился

oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
   
И далее копируем куда нам необходимо. Конечно, так себе способ. Просто хотел показать, что используя инструменты opennebula можно строить подобные решения.

J'ai aussi trouvé sur Internet rapport intéressant et il y a plus un projet si ouvert, mais il n'y a que du stockage pour qcow2.

Mais comme nous le savons tous, tôt ou tard, il arrive un moment où vous souhaitez des sauvegardes incrémentielles, c'est plus difficile ici et peut-être que la direction allouera de l'argent pour une solution payante, ou ira dans l'autre sens et comprendra qu'ici nous ne faisons que réduire les ressources, et effectuer des sauvegardes au niveau de l'application et ajouter un certain nombre de nouveaux nœuds et machines virtuelles - oui, ici, je dis qu'utiliser le cloud uniquement pour lancer des clusters d'applications, et lancer la base de données sur une autre plate-forme ou en prendre une toute faite auprès du fournisseur, si possible.

4. Commodité d'utilisation

Dans ce paragraphe, je décrirai les problèmes que j'ai rencontrés. Par exemple, selon les images, comme nous le savons, il y a une persistance - lorsque cette image est montée sur une machine virtuelle, toutes les données sont écrites sur cette image. Et si elle n'est pas persistante, l'image est copiée dans le stockage et les données sont écrites dans ce qui a été copié à partir de l'image source - c'est ainsi que fonctionnent les modèles de modèles. Je me suis causé à plusieurs reprises des problèmes en oubliant de spécifier persistant et l'image de 200 Go a été copiée, le problème est que cette procédure ne peut certainement pas être annulée, vous devez accéder au nœud et tuer le processus « cp » actuel.

L'un des inconvénients importants est que vous ne pouvez pas annuler des actions simplement en utilisant l'interface graphique. Ou plutôt, vous les annulerez et verrez que rien ne se passe et vous les redémarrerez, les annulerez et en fait il y aura déjà 2 processus cp qui copient l'image.

Et puis il s'agit de comprendre pourquoi opennebula numérote chaque nouvelle instance avec un nouvel identifiant, par exemple, dans le même proxmox, a créé une machine virtuelle avec l'identifiant 101, l'a supprimée, puis vous la créez à nouveau et l'identifiant 101. Dans opennebula, cela n'arrivera pas, chaque nouvelle instance sera créée avec un nouvel identifiant et cela a sa propre logique - par exemple, effacer d'anciennes données ou des installations infructueuses.

Il en va de même pour le stockage : cette plateforme est avant tout destinée au stockage centralisé. Il existe des modules complémentaires pour utiliser le local, mais ce n’est pas de cela dont nous parlons dans ce cas. Je pense qu'à l'avenir, quelqu'un écrira un article sur la façon dont il a réussi à utiliser le stockage local sur les nœuds et à l'utiliser avec succès en production.

5. Simplicité maximale

Bien sûr, plus vous avancez, moins il y a de personnes qui vous comprendront.

Dans les conditions de mon stand - 3 nœuds avec stockage nfs - tout fonctionne bien. Mais si nous menons des expériences impliquant une panne de courant, par exemple lors de l'exécution d'un instantané et de la mise hors tension du nœud, nous enregistrons dans la base de données les paramètres indiquant qu'il existe un instantané, mais en fait il n'y en a pas (enfin, nous comprenons tous que nous a initialement écrit la base de données à propos de cette action en sql , mais l'opération elle-même n'a pas réussi). L'avantage est que lors de la création d'un instantané, un fichier séparé est formé et il y a un "parent", donc en cas de problème et même si cela ne fonctionne pas via l'interface graphique, nous pouvons récupérer le fichier qcow2 et le restaurer séparément docs.opennebula.io/5.8/operation/vm_management/vm_instances.html

Sur les réseaux, malheureusement, tout n’est pas si simple. Eh bien, au moins, c'est plus facile que dans openstack, j'ai utilisé uniquement un vlan (802.1Q) - cela fonctionne plutôt bien, mais si vous modifiez les paramètres à partir du modèle de réseau, ces paramètres ne seront pas appliqués aux machines déjà en cours d'exécution, c'est-à-dire vous devez supprimer et ajouter une carte réseau, les nouveaux paramètres seront alors appliqués.

Si vous souhaitez toujours le comparer avec openstack, vous pouvez dire ceci : dans opennebula, il n'y a pas de définition claire des technologies à utiliser pour stocker les données, gérer le réseau, les ressources - chaque administrateur décide lui-même de ce qui lui convient le mieux.

6. Plugins et installations supplémentaires

Après tout, si nous le comprenons, la plate-forme cloud peut gérer non seulement kvm, mais également vmware esxi. Malheureusement, je n'avais pas de pool avec Vcenter, si quelqu'un a essayé, écrivez-moi.

La prise en charge d'autres fournisseurs de cloud est indiquée docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZUR.

J'ai également essayé de connecter Vmware Cloud depuis Selectel, mais rien n'a fonctionné - en général, il a été bloqué car il y a de nombreux facteurs, et cela ne sert à rien d'écrire au support technique de l'hébergeur.

De plus, la nouvelle version a désormais un pétard - il s'agit du lancement de microvm, un type de harnais kvm sur docker, qui offre encore plus de polyvalence, de sécurité et de productivité accrue car il n'est pas nécessaire de gaspiller des ressources en émulation d'équipement. Le seul avantage que je vois par rapport à Docker est qu'il ne prend pas un nombre supplémentaire de processus et qu'il n'y a pas de sockets occupés lors de l'utilisation de cette émulation, c'est-à-dire Il est tout à fait possible de l’utiliser comme équilibreur de charge (mais cela vaut probablement la peine d’écrire un article séparé à ce sujet jusqu’à ce que j’aie entièrement exécuté tous les tests).

7. Expérience positive d'utilisation et de débogage des erreurs

Je voulais partager mes observations sur le travail, j'en ai décrit certaines ci-dessus, j'aimerais en écrire davantage. En effet, je ne suis probablement pas le seul à penser au début que ce n'est pas le bon système et qu'en général, tout ici n'est qu'une béquille - comment fonctionnent-ils avec cela ? Mais ensuite, on comprend que tout est tout à fait logique. Bien entendu, on ne peut pas plaire à tout le monde et certains aspects nécessitent d’être améliorés.

Par exemple, une simple opération de copie d’une image disque d’une banque de données à une autre. Dans mon cas, il y a 2 nœuds avec nfs, j'envoie l'image - la copie s'effectue via l'opennebula frontend, bien que nous soyons tous habitués au fait que les données doivent être copiées directement entre les hôtes - dans le même vmware, hyper-v nous sommes habitué à cela, mais ici à un autre. Il existe une approche différente et une idéologie différente, et dans la version 5.12, ils ont supprimé le bouton « migrer vers la banque de données » - seule la machine elle-même est transférée, mais pas le stockage car signifie stockage centralisé.

Vient ensuite une erreur populaire avec diverses raisons : « Erreur de déploiement de la machine virtuelle : impossible de créer un domaine à partir de /var/lib/one//datastores/103/10/deployment.5 ». Vous trouverez ci-dessous la principale chose à examiner.

  • Droits d'image pour l'utilisateur oneadmin ;
  • Autorisations pour l'utilisateur oneadmin d'exécuter libvirtd ;
  • La banque de données est-elle montée correctement ? Allez vérifier le chemin sur le nœud lui-même, peut-être que quelque chose est tombé ;
  • Réseau mal configuré, ou plutôt sur le frontend, c'est dans les paramètres réseau que l'interface principale du vlan est br0, mais sur le nœud, elle est écrite comme bridge0 - elle doit être la même.

La banque de données système stocke les métadonnées de votre machine virtuelle. Si vous exécutez la machine virtuelle avec une image persistante, la machine virtuelle doit alors avoir accès à la configuration initialement créée sur le stockage sur lequel vous avez créé la machine virtuelle - c'est très important. Par conséquent, lors du transfert d’une machine virtuelle vers une autre banque de données, vous devez tout revérifier.

8. Documentation, communauté. La poursuite du développement

Et le reste, une bonne documentation, une communauté et l'essentiel est que le projet continue de vivre dans le futur.

En général, tout est assez bien documenté et même en utilisant une source officielle, ce ne sera pas un problème d'installer et de trouver des réponses aux questions.

Communauté, active. Publie de nombreuses solutions prêtes à l'emploi que vous pouvez utiliser dans vos installations.

Pour le moment, certaines politiques de l'entreprise ont changé depuis le 5.12 forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 Il sera intéressant de voir comment le projet évolue. Au début, j'ai spécifiquement souligné certains des fournisseurs qui utilisent leurs solutions et ce que propose le secteur. Bien sûr, il n’y a pas de réponse claire sur ce qu’il faut utiliser. Mais pour les petites organisations, la maintenance de leur petit cloud privé n’est peut-être pas aussi coûteuse qu’il y paraît. L'essentiel est de savoir exactement ce dont vous avez besoin.

Par conséquent, quel que soit votre choix en tant que système cloud, vous ne devez pas vous limiter à un seul produit. Si vous avez le temps, cela vaut la peine de jeter un œil à d'autres solutions plus ouvertes.

Il y a une bonne conversation t.me/opennebula Ils vous aident activement et ne vous envoient pas chercher une solution au problème sur Google. Rejoignez-nous.

Source: habr.com

Ajouter un commentaire