Bonjour. Cet article a été écrit pour ceux qui se précipitent encore entre le choix des plates-formes de virtualisation et après avoir lu un article de la série "Nous avons installé proxmox et tout va bien en général, 6 ans de disponibilité n'est pas une seule lacune." Mais après avoir installé l'une ou l'autre solution en boîte, la question se pose, comment puis-je la corriger ici, pour que la surveillance soit plus compréhensible et ici, afin de contrôler les sauvegardes ... Et puis le moment vient et vous comprenez que vous voulez quelque chose de plus fonctionnel, eh bien, ou vous voulez que tout devienne clair à l'intérieur de votre système, et non cette boîte noire, ou vous voulez utiliser quelque chose de plus qu'un hyperviseur et un tas de machines virtuelles. Dans cet article, il y aura un peu de réflexion et de pratique basée sur la plateforme Opennebula - je l'ai choisie. pas exigeant sur les ressources et l'architecture n'est pas si compliquée.
Ainsi, comme nous pouvons le voir, 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 connexions pour l'infrastructure cloud, le même YANDEX par exemple. Quelqu'un utilise openstack et fait une liaison sur cette base - SELECTEL, MAIL.RU. Mais si vous avez votre propre matériel et une petite équipe de spécialistes, vous choisissez généralement quelque chose parmi les prêts à l'emploi - VMWARE, HYPER-V, il existe des licences gratuites et des licences payantes, mais il ne s'agit plus de cela. 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 la société ait clairement indiqué: «Qui servira cela après vous?» «Allons-nous ensuite le déployer en production? Effrayant." Mais vous pouvez d'abord appliquer ces solutions dans un banc de test et si tout le monde l'aime,alors la question de la poursuite du développement et de l'utilisation dans des environnements plus sérieux peut être soulevée.
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à clair pour un spécialiste expérimenté, et dans certains cas, je ne décrirai pas tout, car de telles commandes et descriptions se trouvent sur le réseau. Voici juste mon expérience avec cette plateforme. J'espère que les participants actifs ajouteront dans les commentaires ce qui peut être mieux fait et les erreurs que j'ai commises. Toutes les actions se sont déroulées dans un stand à domicile, composé de 3 PC avec des caractéristiques différentes. De plus, je n'ai pas spécifiquement précisé comment ce logiciel fonctionne et comment l'installer. Non, juste l'expérience de l'administration et les problèmes que j'ai rencontrés. Peut-être que quelqu'un le trouvera utile pour choisir.
Et donc, commençons. En tant qu'administrateur système, les points suivants sont importants pour moi, sans lesquels je n'utiliserai guère cette solution.
1. Répétabilité de l'installation
Il existe des tonnes d'instructions pour installer opennebula, il ne devrait donc y avoir aucun problème. De version en version, de nouvelles fonctionnalités apparaissent qui ne peuvent pas toujours être gagnées lors du passage d'une version à l'autre.
2. Suivi
Nous surveillerons le nœud lui-même, kvm et opennebula. Le bien est déjà là. Il y a beaucoup d'options sur la surveillance des hôtes linux, le même zabbix ou exportateur de nœuds - qui aime quoi - au moment où je le définis pour que la surveillance des métriques système (température où elle peut être mesurée, cohérence de la matrice de disques), via zabbix, mais comme pour demandes via l'exportateur vers prometheus. Pour surveiller kvm, par exemple, vous pouvez prendre le projet github.com/zhangjianweibj/prometheus-libvirt-exporter.git et lancer le lancement via systemd, cela fonctionne assez bien et affiche les métriques kvm, il y a aussi 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 avons besoin d'un deuxième pour surveiller l'opennebula lui-même, j'ai utilisé ce github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter
Vous pouvez ajouter ce qui suit à un node_exporter régulier pour surveiller le système.
Dans le fichier de node_exporter, modifiez le début de cette manière:
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
bash script présenté ci-dessus, vérifiez d'abord le travail via la console, s'il montre ce qui est nécessaire (s'il donne une erreur, puis mettez xmlstarlet), copiez-le dans /usr/local/bin/opennebula_exporter.sh
Ajouter à Tâche CZK 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 récupérer avec un prométhée et créer des graphiques et faire des alertes. Par exemple, vous pouvez dessiner un tableau de bord aussi simple dans grafan.
(vous pouvez voir qu'ici j'ai overcommit cpu, ram)
Pour ceux qui aiment et utilisent les zabbiks, il y a github.com/OpenNebula/addon-zabbix
Surveiller tout, l'essentiel est. Bien sûr, vous pouvez, en plus, utiliser les outils de surveillance intégrés pour les machines virtuelles et télécharger des données vers la facturation, ici chacun a sa propre vision, jusqu'à ce qu'il s'y attarde de plus près.
Je n'ai pas encore commencé à me connecter. L'option la plus simple est d'ajouter td-agent pour analyser le répertoire / var / lib / one avec des expressions régulières. Par exemple, le fichier sunstone.log convient à l'expression rationnelle nginx et à d'autres fichiers qui affichent l'historique des appels à la plate-forme - quel est le plus? Eh bien, par exemple, nous pouvons clairement suivre le nombre de "Erreur, erreur" et rapidement suivre où et à quel niveau il y a un dysfonctionnement.
3. Sauvegardes
Il existe également des projets dopés payants - par exemple sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon: OpenNebula_Backup. Ici, nous devons comprendre que la simple sauvegarde de l'image de la machine, dans ce cas, n'est pas du tout la même, car nos machines virtuelles doivent fonctionner avec une intégration complète (le même contexte de fichier, qui décrit les paramètres réseau, le nom de la machine virtuelle et les paramètres personnalisés pour vos applications). Par conséquent, ici, nous décidons 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 vm elle-même. Et peut-être que vous n'avez besoin de sauvegarder qu'un seul disque de cette machine.
Par exemple, nous avons décidé que toutes les machines sont démarrées avec des images persistantes, par conséquent, après avoir lu docs.opennebula.io/5.12/operation/vm_management/img_guide.html,
cela signifie que nous pouvons d'abord décharger l'image de notre vm:
onevm disk-saveas 74 3 prom.qcow2
Image ID: 77
,
oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
. , . , opennebula .
Toujours dans l'immensité du réseau, j'ai trouvé un rapport intéressant et il y a aussi un tel projet ouvert , mais ici uniquement pour le stockage qcow2.
Mais comme nous le savons tous, tôt ou tard, il arrive un moment où nous voulons 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 scier les ressources et faire de la redondance au niveau de l'application et ajouter un certain nombre de nouveaux nœuds et machines virtuelles - oui, ici, je dis que l'utilisation du cloud est purement pour lancer des clusters d'applications et exécuter la base de données sur une autre plate-forme ou en prendre une prête à l'emploi du fournisseur, si possible.
4. Facilité d'utilisation
Dans ce paragraphe, je décrirai les problèmes que j'ai rencontrés. Par exemple, par les images, comme nous le savons, il y a persistante - lorsque cette image est montée sur vm, 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 sur ce qui a été copié à partir de l'image d'origine - c'est ainsi que les modèles de modèles fonctionnent. À plusieurs reprises, il s'est fait des problèmes en oubliant de spécifier persistante et l'image de 200 Go a été copiée, le problème est que cette procédure ne peut pas être annulée, vous devez aller au nœud et clouer 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. Au contraire, vous les annulez et voyez que rien ne se passe et recommencez, annulez et en fait, il y aura déjà 2 processus cp qui copient l'image.
Et puis il faut comprendre pourquoi opennebula chaque nouvelle instance numérote un nouvel identifiant, par exemple, dans le même proxmox a créé une vm avec l'identifiant 101, l'a supprimée, puis vous créez à nouveau l'identifiant 101. Dans opennebula, cela ne se produira 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, surtout, cette plate-forme est destinée au stockage centralisé. Il existe des addons pour utiliser local, mais dans ce cas, pas à ce sujet. Je pense qu'à l'avenir, quelqu'un écrira un article sur la façon dont il était possible d'utiliser le stockage local sur les nœuds et de l'utiliser avec succès en production.
5. Simplicité maximale
Bien sûr, plus vous allez loin, moins il y aura 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 pour couper l'alimentation, alors par exemple lors du démarrage d'un instantané et de la mise hors tension du nœud, nous sauvegardons les paramètres dans la base de données, qui est un instantané, mais en fait ce n'est pas le cas (enfin, nous comprenons tous que nous avons initialement écrit la base de données sur cette action en sql , mais l'opération elle-même n'a pas réussi). Le plus 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 récupérer séparément docs.opennebula.io/5.8/operation/vm_management/vm_instances .html
Malheureusement, tout n'est pas si simple sur les réseaux. Eh bien, au moins, c'est plus facile que dans openstack, je n'ai utilisé que vlan (802.1Q) - cela fonctionne bien, mais si vous modifiez les paramètres du réseau de modèles, ces paramètres ne seront pas appliqués sur les machines déjà en cours d'exécution, c'est-à-dire que vous devez supprimer et ajouter le réseau map, puis les nouveaux paramètres sont appliqués.
Si vous voulez toujours comparer avec openstack, alors nous pouvons le dire, dans opennebula, il n'y a pas de définition claire des technologies à utiliser pour stocker des données, gérer un réseau, des ressources - chaque administrateur décide pour lui-même de la manière la plus pratique pour lui.
6. Plugins et installations supplémentaires
Après tout, comme nous le comprenons, la plate-forme cloud peut gérer non seulement kvm, mais aussi vmware esxi. Malheureusement, je n'avais pas de piscine avec Vcenter, si quelqu'un essayait d'écrire.
Pris en charge par d'autres fournisseurs de cloud docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZURE.
J'ai également essayé de visser Vmware Cloud à partir du sélecteur, mais rien n'a fonctionné - en général, j'ai marqué parce qu'il y a de nombreux facteurs, et il ne sert à rien d'écrire au support technique du fournisseur d'hébergement.
De plus, maintenant dans la nouvelle version, il y a un pétard - c'est le lancement de microvm, comme la liaison kvm sur docker, qui donne encore plus de polyvalence, de sécurité et de performances accrues, car il n'est pas nécessaire de dépenser des ressources pour émuler du matériel. Je ne vois qu'un avantage par rapport à docker en ce 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 vous ayez terminé tous les tests au maximum).
7. Expérience positive de l'utilisation et du débogage des erreurs
Je voulais partager mes observations sur le travail, j'en ai décrit une partie ci-dessus, je veux en écrire plus. En effet, je ne suis probablement pas le seul à penser au début que ce n'est pas le bon système et en général tout est des béquilles ici - comment fonctionnent-ils généralement avec cela? Mais alors la compréhension vient et que tout est assez logique. Bien sûr, pour ne pas plaire à tout le monde et certains points nécessitent des améliorations.
Par exemple, une opération simple pour copier une image disque d'une banque de données vers une autre. Dans mon cas, il y a 2 nœuds avec nfs, j'envoie l'image - la copie passe par 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és à cela, mais ici par à un autre. Voici une approche différente et une idéologie différente, et dans la version 5.12 le bouton «migrer vers le magasin de données» a été supprimé - seule la machine elle-même est transférée, mais pas le stockage. signifie stockage centralisé.
En outre, il existe une erreur courante avec diverses raisons «Erreur lors du déploiement de la machine virtuelle: impossible de créer le domaine à partir de /var/lib/one//datastores/103/10/deployment.5» Voici le haut que vous devez regarder.
- Droits d'image pour l'utilisateur oneadmin;
- Droits pour l'utilisateur oneadmin d'exécuter libvirtd;
- datastore? , ;
- , frontend , vlan br0, — bridge0 — .
la banque de données système stocke les métadonnées de votre vm, si vous démarrez vm avec une image persistante, vm doit avoir accès à la configuration créée à l'origine sur le stockage où vous avez créé la vm - c'est très important. Par conséquent, lors du transfert de vm vers une autre banque de données, vous devez tout vérifier.
8. Documentation, communauté. Développement ultérieur
Et le reste, bonne documentation, communauté et surtout que le projet continue de vivre dans le futur.
Ici, en général, tout est assez bien documenté et même selon la source officielle, il ne sera pas difficile d'établir 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.
À l'heure actuelle, certaines politiques de l'entreprise ont changé depuis la version 5.12.forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 il sera intéressant de savoir comment le projet évoluera. Au début, j'ai spécifiquement souligné certains des fournisseurs qui utilisent leurs solutions et ce que propose l'industrie. 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é peut ne pas être 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, il vaut la peine d'examiner d'autres solutions plus ouvertes.
Il y a un bon chat t.me/opennebula qui aide activement et n'envoie pas pour rechercher une solution au problème dans Google. Rejoignez-nous.