Table des matières
Quelques notes sur Proxmox de l'infra de Neutrinet
(Un résumé de l'infra pour les noobs ^^)
C'est notes ont été prises les de la journée du 2020/08/01 (Hub infra). Merci Célo !
En résumé
La vue data center montre les différentes machines physiques qui peuvent avoir des machines virtuelles. Ici, deux machines, Troll et Orval. Quand on installe Proxmox sur une machine physique, on peut d'office y accéder par son port 8006 et la machine est automatiquement dans la vue data center. Ici, qu'on se connecte à Troll ou Orval du data center , on accède à la même interface de gestion.
Les machines virtuelles sont numérotées, chacune a sa petite configuration hardware particulière. Quand on crée une VM on doit créer un disque dur qui va contenir toutes les données comme un disque dur physique.
Il y a 2 types importants de stockage :
1) Le stockage local (sur le disque d'Orval, par exemple, on met les fichiers des vm sur le disque d'Orval). Son désavantage : si on veut passer la machine d'Orval à Troll, il faut copier les fichiers sur l'autre machine.
2) Le CEPH : dédié à la distribution de données sur différents machines. Donc Troll et Orval ont le même espace de stockage.
C'est ici qu'intervient une troisième petite machine. Elle n'est pas reprise dans le data center car elle n'hébergera pas de machines virtuelles mais apparaît dans Proxmox. Il s'agit de Comptoir. Comptoir n'a pas de disque dur mais est responsable de la gestion du stockage : c'est cette machine qui prend les décision pour dire si les données vont sur un disque ou l'autre.
Troll et Orval partagent un même espace de stockage : data.
Cette architecture permet de migrer une machine virtuel d'Orval sur Troll, sans coupure, et facilement via l'interface web. Lors de la migration, la machine est déplacée en terme de CPU et de mémoire mais le stockage reste data, géré par CEPH. C'est uniquement la machine physique qui gère son fonctionnement qui change.
Ça permet par exemple de déplacer temporairement toutes les machines virtuelles sur Troll afin d'éteindre Orval ou de le redémarrer sans stopper les machines. On peut aussi automatiser : exiger que telle machine soit toujours en ligne, et qu'elle soit déplacé sur telle machine physique.
Chaque machine a deux disque dur, donc 4 OSD, qui sont gérés par CEPH. Comptoir sert de quorum. (?)
Création d'une machine virtuelle avec Proxmox
(MAJ du 23/05/2021)
Les machines virtuelles peuvent être créées facilement dans l'interface de Proxmox un peu comme dans VirtualBox. On peut choisir d'abord sur quel serveur du data center on créé la machine (on ne voit pas Comptoir qui ne gère pas de machine virtuelle). On choisit ensuite les informations pour la machine. On peut demander à Proxmos de simuler un matériel particulier ou d'utiliser les hardware du serveur. Pour les nouvelles VM de la nouvelle infra, on utilisera la config suivante :
General
- Node (le serveur sur lequel on créé la machine, bour ou nam)
- VM ID : le numéro de la VM (avec lequel elle apparaîtra dans l'interface)
- Name : le nom complet de la VM, avec son domaine donc nom.cluster.datacenter.neutri.net
- Ressource Pool : On ne met rien.
OS
- Use CD/DVD : on met l'image iso choisie (on utilisera un Debian avec un “preesed spécifique” (ça fait gagner du temps car on ne remplit pas certaines infos à chaque fois, comme les langues, le partionnement, etc., et en plus toutes les VM auront la même config)
- Guest OS : Type Linux, Version 5.x - 2.6 Kernel (donc les Kernel suppérieur à 2.6)
System
- Graphic cart : Default
- SCSI Controller : VirtlO SCSI
- Qemu Agent : on coche la case. Ce petit programme permet à Proxmox de communiquer avec l'OS. C'est un peu comme dans VirtualBox avec les guests tools. Cela peut servir en cas de backup : Proxmos peut demander de figer le disque dur virtuel de la machine pour être certain qu'on obtient un backup consistant.
Hard Disk
- Bus Device : on laisse SCSI et O
- Storage : on laisse data (le disque local de la machine, bour ou nam - ou pourrait aussi choisir d'utiliser CEPH ou ajouter des disques durs)
- Disk Size : le nombre de GB qu'on souhaite donner à la machine
- Cache : Default
- Discard : on coche la case (cela permet de rendre de l'espace à proxmox si tout l'espace disque de la machine n'est pas utilisé)
CPU
- Sockets : on laisse 1
- Cores : le nombre de cœurs que l'on souhaite donner à la machine
- Type : host (cela signifie qu'on choisit les caractéristiques physiques du CPU de la machine host, mais on pourrait aussi choisir de simuler un matériel particulier. Donner des caractéristiques spécifiques au CPU pourrait par exemple être utile pour virtualiser un système plus ancien ou si la seconde machine du data center ne disposait pas d'un processeur avec le même jeu d'instruction. Dans ce dernier cas, en effet, il faudrait alors choisir le jeu d'instruction le plus bas pour ne pas créer de conflit lors d'une migration.)
Memory
- La mémoire RAM qu'on donne à la machine. Contrairement au stockage, il faut s'assurer d'avoir à disposition la RAM qu'on octroie à la machine. Si on donne plus de RAM que disponible, Proxmox va utiliser la swap alors que les machines croiront remplir la RAM. Cela entraîne des ralentissements.
Network
- Bridge : vmbr0
- VLAN Tag : le numéro du VLAN sur lequel la machine doit être
- On décoche Firewall (car on utilisera pfSense)
- Model : On laisse VirtlO (paravirtualized)
On peut choisir une ou plusieurs interfaces réseau (pour un routeur, on en mettrait deux par exemple). Proxmox permet de virtualiser le hardware mais aussi le réseau. On peut créer l'équivalent d'un switch virtuel sur lequel sont connectés tous les câbles des machines virtuelles. L'avantage, c'est qu'on ait fait 3 ou 50 ports, on pourra ensuite dire à la machine virtuelle de se plugger dessus. On peut aussi faire un switch qui n'est pas connecté à internet si certaines machines doivent parler entre elles mais pas à l'extérieur. Et avoir un switch connecté virtuellement à internet.
Un autre avantage de la virtualisation est ainsi qu'on peut créer des environnements qui sont proches de nos besoins en termes d'isolation ou de communication entre les machines. Par exemple, on pourrait faire un switch virtuel pour les autres associations, mais qui alors ne sont pas sur le même réseau que les machines de Neutrinet. Pour le moment, on a les switch vmbr0 et vmbr1. Lors de la création d'une machine, VirtlO signifie qu'on utilise les couches physique du serveur, donc la carte réseau physique du serveur. Là aussi, on pourrait encore choisir un équipement particulier.
Une fois la machine créée on va encore édité certains paramètres :
- Dans Options: On change no en yes pour Start at boot
- Dans Hardware: On ajoute un port Serial
A l'installation, on n'a que l'IP, la GW et le serveur DNS à donner à la machine et si l'on a bien configuré pfSense préalablement, elle pourra en déduire son nom de domaine. NB : pour le cluster PATATA qui contient les machines de la nouvelles infra, les machines ne communiquent sur ce réseau qu'en IPv6, on ne doit donc renseigner que l'IPv6.
A la fin de l'installation, on retire le CD/DVD, sinon il se bloque dans la machine. On redémarre ensuite la machine.
Migrations et backups
Les migrations sont faciles à effectuer. Les machines continuent à fonctionner pendant la migration. On peut le vérifier en lançant un ping (par exemple vers 1.1.1.1) durant la migration. On voit que le ping n'a perdu que quelques millisecondes pendant l'opération.
! Quand la machine virtuelle s'installe, l'ISO est situé localement sur une des machines et elle ne peut pas être migré sur l'autre. On obtient alors une erreur en essayant la migration.
La virtualisation permet de faire des snapshots. Dans les snapshots, on prend un instantané du disque dur et on inclut aussi la RAM, ce qui permet de revenir rapidement à un état précédent de la machine en cas de problème. La machine est en effet restaurée exactement telle qu'elle était avec tous les processus en cours. Par exemple, si l'on est en train de faire un ping, lorsque la machine est restaurée, le ping reprend là où il en était.
Pour les backups, il y a deux possibilités, soit avec les snapshots, soit un backup normal. Il y a un stockage spécial pour les backups, qui est synchronisé entre Troll et Orval. Si le backup est fait comme un snapshot, CEPH utilise le Quemu agent pour figer le disque. Si l'on fait un backup normal, la machine doit s'arrêter.
La différence est que les snapshots sont stockés dans le CEPH. Les autres backups peuvent être déplacés ailleurs, même sur d'autres machines.
Réseau
On a deux matériels de câble réseau, le cuivre et la fibre optique. Pour CEPH, il faut du rapide, au moins 10 Gbit/s (?) idéalement. Il y a donc une carte réseau avec 2 ports 10Gbit/s (?) et de la fibre. Troll et Orval sont aussi connectés entre eux par des câbles en cuivre, comme ça si la carte fibre optique crash, on a un réseau de secours. L'idée c'est qu'on puisse arracher n'importe quel câble, ça continue de fonctionner : si la connexion entre Troll et Comptoir casse, ça utilise les câbles réseau qui vont de Troll à Orval et de Comptoir à Orval. Cela permet d'arracher le moindre câble réseau sans perte de paquet.
Faire cela est possible avec SPF et LACP. LACP permet d'agréger des ports physiques en une seule connexion virtuelle. On utilise Open vSwitch, ce qui permet de créer autant de VLAN qu'on désire, et à chaud. On peut aussi utiliser les primitives du kernel mais il faut alors créer de nouvelles interfaces réseau.
Le bridge vmbr0 est utilisé pour l'interconnexion avec les serveurs. Sur ce switch virtuel, un câble est connecté pour aller à Comptoir, et ensuite on a les deux liens entre Troll et Orval. C'est le vlan 20 qui permet la connexion privée entre Troll, Orval et Comptoir. Il est équipé d'un Rapid Spanning Tree Protocol pour bloquer les liens redondants tant que le lien 10 Gbits fonctionne.
vmbr0 et vmbr1 : ici, vmbr0 fait le bridge entre une interface physique, Troll, Comptoir et Orval. Et vmbr1 est une autre interface physique, mais c'est spécifique à cette config : un câble réseau sur Troll et Orval puis sur le modem de la maison. Chez Verixi, les vmbr1, seront utilisés pour les edge 01 et 02. Par exemple pour relier edge 01 et router 01.
Les vlan permettent de créer des réseaux isolés. On peut taguer des numéros sur les paquets, ce qui permet d'utiliser la même interface matérielle et physique tout en créant des réseaux qui ne communiquent pas entre eux. Par exemple, quand on créé des paquets sur le vlan 10, ils ne vont pas sur le vlan 20. On utilise ici les mêmes câbles réseaux physiques pour les liens entre proxmox et les machines virtuelles et pour les machines virtuelles entre elles. Cette fragmentation est une bonne pratique : on isole les machines physiques dans un vlan et les machines virtuelles dans un autre vlan.
- English
- Français
- Nederlands