Commit 7ac4a4ce authored by Thierry Fenasse's avatar Thierry Fenasse

connecter le gluster au proxmox et faire quelques essais avec des vms

parent 628aa6c4
Proxmox Découverte de Proxmox
======= =====================
Avoir une machine avec Proxmox c'est bien. Avoir une machine avec Proxmox c'est bien.
En avoir deux c'est probablement mieux. En avoir deux c'est probablement mieux. Tiens ?! À ce propos, Il parrait que VMWare offre une solution qui synchronise la RAM ? Si c'est vrais, peut-on se contenter d'une solution telle que Proxmox ? À vérifier et évaluer les avantages et inconvénients.
* il parrait que seul VMWare offre une solution qui synchronise la RAM ? Si c'est vrais, peut-on se contenter d'une solution telle que Proxmox ? En avoir trois, je suppose que c'est ce qui se rapporchera du minimum décent pour de la haute disponibilité. Mais est-ce vraiment nécessaire ?
En avoir trois, je suppose que c'est ce qui se rapporchera du minimum décent pour de la haute disponibilité. Mais est-ce nécessaier dans un cadre asseciatif ? Soit… commençons déjà avec un Proxmox.
La partie qui fait tourner les VMs Le Proxmox installé
---------------------------------- -------------------
C'est le cpu, la ram, le réseau, etc. Dans mon labo pourri, sur un vieux serveur avec un cpu Xeon (8cœurs), 16Gb de ram, 1 carte Gigabit, et un raid 5 (ext4) sur 4 disques avec `mdadm`. J'ai installé Proxmox 5.2 [depuis l'iso](https://www.proxmox.com/en/downloads/item/proxmox-ve-5-2-iso-installer) sur un disque sata de 80Gb hors du raid.
En gros, si je me souviens bien, je me suis laisser guider lors de l'installation sans trop me poser de question, et au final je me suis connecté en `https` sur l'url du nouveau serveur.
La partie qui stocke les données ![[Proxomox - Et ses disques sur le vieux serveur](./assets/Proxmox_Et_Ses_Disques_Sur_Mon_Vieux_Serveur_Pourri.png)
--------------------------------
Évidemment les VMs ont besoin d'un ou plusieurs disques pour fonctionner. Ça dépendra de leurs usages évidemment. Dans ce serveur, que j'avais installé il y a quelques mois avant de rédiger la [découverte d'ansible]() et [celle de glusterfs](), j'ai créé quelques VMs dont les disques sont sur le raid5.
Le serveur s'appelle `pve` et c'est en même temps une machine qui est le seul nœud du datacenter et celui auquel on se connecte pour gérer les VMs _(ou les conteneurs LXC)_, que ce soit via l'interface web ou la ligne de commande.
Le stockage du datacenter virtuel
---------------------------------
Vue en ligne de commande…
```
root@pve:~# cat /etc/pve/storage.cfg
dir: local
path /var/lib/vz
content iso,vztmpl
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir
dir: lvm-raid
path /var/lib/lvm-raid
content images,backup
maxfiles 7
shared 1
glusterfs: gluster01
path /mnt/pve/gluster01
volume gv0
content images
server hpc01
```
Vue en interface web…
![Proxmox - Le storage du datacenter](./assets/Proxmox_Datacenter_Storage.png)
Dans ce « datacenter » il est possible de gérer des **espaces de stockages différents** en fonction des roussources dont on dispose.
![Proxomox - Stockage - Ajout d'un espace de stockage](./assets/Proxmox_Storage_Ajout_De_Stockage.png)
Vous noterez que [CEPH] n'est pas repris dans la liste des solutions de stockages disponibles de notre datacenter. En effet, c'est au niveau de notre premier (et jusqu'ici unique) nœud que se trouve cette option. J'imagine qu'il y a une raison, mais je ne sais pas encore laquelle.
![Proxomox - Nœud - Stockage CEPH](./assets/Proxmox_Node_CEPH.png)
Et en fonction du genre de stockage choisi ou possible, il y aura une différence entre ce qui sera possible de mettre desssus. Parmis les choses à stocker, il y a
* les images disque des VMs
* les images ISO d'Installation
* les template de conteneurs
* les conteneurs
* les backups comprimés
Voici quelques exemples.
![Proxmox - Stockage - Ajout d'un dossier local](./assets/Proxmox_Storage_Ajout_Dossier_Local.png)
![Proxmox - Stockage - Ajout de GlusterFS](./assets/Proxmox_Storage_Ajout_GlusterFS.png)
![Proxmox - Stockage - Ajout de NFS](./assets/Proxmox_Storage_Ajout_NSF.png)
Le réseau d'un nœud du datacenter
---------------------------------
Je suis trop ignorant en réseau pour jouer avec, mais au moins je découvre qu'il y a des possibilités.
Vue en ligne de commande…
```
root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface enp30s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.250
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports enp30s0
bridge_stp off
bridge_fd 0
```
Vue en interface web…
![Proxmox - Nœud - Vue des interfaces réseau](./assets/Proxmox_Node_Network.png)
Et derrière le bouton `create` il est possible d'ajouter des `Linux Bridges`, `Linux Bonds`, `OVS Bridges`, `OVS Bonds` et `OVS IntPorts` mais je ne sais pas encore quoi en faire.
Chaque datacenter (`cluster`) ou et chaque nœud (`node`) disposent également d'un pare-feu basé sur `iptable` comme le mentionne ![la documentation](https://pve.proxmox.com/wiki/Firewall). Voici ce que ça donne pour le nœud dans l'interface web:
![Proxmox - Nœud - Pare-feu](assets/Proxmox_Node_Firewall.png)
Ajout du GlusterFS
------------------
Étant du genre fénéant, j'ai utilisé l'interface web (aussi parcequ'elle apporte une vue sur les **options** ou les **fonctionnalités** qui sont ou seraient disponibles. La première fois ça n'a pas fonctionné parce que j'utilisais l'adresse IP d'un des `nœuds` de mon GlusterFS _(cf. [découverte de GlusterFS](https://gitlab.domainepublic.net/tierce/decouverte-glusterfs))_.
En ajoutant les noms d'hôtes comme suit, ça c'est passé beaucoup mieux.
```
root@pve:~# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.250 pve.home pve pvelocalhost
#Glusters
192.168.1.121 hpc01.home hpc01
192.168.1.122 hpc02.home hpc02
192.168.1.123 hpc03.home hpc03
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
```
En gros, via l'interface web, il y a juste deux trois trucs à renseigner pour voir apparaître un stockage supplémentaire pointant vers le volume `gv0` du GlusterFS.
![Proxmox - stockage - Ajout du volume 0 du GlusterFS](./assets/Proxmox_Storage_Ajout_gv0_GlusterFS.png)
Et c'est tout de suite utilisable pour la suite de la découverte.
Copie de la vm101
-----------------
Depuis l'interface web, je lance le déplacement (`move`) du disque de la vm101 _(les numéros sont choisis par Proxmox, et ça à le mérite d'être clair)_ vers le nouvel espace de stockage sur le GlusterFS.
Déplacement du disque de la vm101 vers GlusterFS…
![Proxmox - Nœud - Déplacement du disque de la vm101 vers GlusterFS](assets/Proxmox_Node_Move_vm101_Disk_To_Gluster.png)
Les trois nœuds reçoivent le disque de la vm101…
![Gluster - Les trois nœuds reçoivent le disque de la vm101](assets/Gluster_Recieve_vm101_Disk_From_Proxmox.png)
Proxomox affiche le déplacement en cours du disque de la vm101…
![Proxmox - Nœud - Affiche le déplacement en cours du disque de la vm101](assets/Proxmox_Node_Moving_vm101_Disk_To_Gluster.png)
Et les trois nœuds du GlusterFS contiennent le disque de la vm101.
![Gluster - Les trois nœuds contiennent le disque de la vm101](assets/Gluster_Recieve_vm101_Disk_From_Proxmox.png)
### performances de la vm101 glusterifiée ###
Et qu'est-ce que ça donne sur cette machine virtuelle hébergées sur le serveur Proxmox et dont le disque est répliqué sur les trois machines du GlusterFS ?
![Vm101 - Rsync avec le disque sur GlusterFS vue avec Slurm](./assets/Vm101_Rsync_Avec_Disque_Sur_GlusterFS_Vue_Avec_Slurm.png)
On voit avec `slurm` que la vitesse de copie plafonne vers les 35MB/s et pour rappel, les disques SATA des vieux PC ne font pas plus que du 60MB/s.
![Vm101 - Rsync avec le disque sur GlusterFS vue avec Nmon](./assets/Vm101_Rsync_Avec_Disque_Sur_GlusterFS_Vue_Avec_Nmon.png)
Idem avec un autre outil de métriques (`nmon`).
Notez que les trois machines du GlusterFS **n'envoient rien comme données les unes aux autres** et elles semblent, je ne sais par quelle magie recevoir simultanément ces données. Comment ça se fait ?
C'est en fait le serveur Proxmox qui balance sur les trois machines du gluster !
![Proxmox - Rsync trois fois plus vers les machines GlusterFS](assets/Proxmox_Rsync_Trois_Fois_Plus_Vers_Les_Machines_GlusterFS.png)
Dans la capture ci-dessus, les trois graphes sont les `hpc01,02,03` (Glusterfs). Dans la zone en bas à gauche, il y a le `debian` (vm101) qui synchronize un fichier venant de `q` _(pc source du fichier .iso copié)_ en passant par le `pve` _(hôte Proxmox)_ qui affiche la plus grande vitesse d'envoit! Même supérieure au pc source `q`. Ça sous entend que le montage glusterfs du Proxmox _(client)_ orchestre un envoit simultané vers les trois nœuds du volume `gv0` _(serveur)_. **Oufti, je l'avais pas vu venir celle là!**
Copie de la vm108
-----------------
J'ai fait pareil que pour la `vm101` et on voit maintenant deux disques sur les trois pc du GlusterFS.
![GlusterFS - Affiche maintenant deux disques de vms](./assets/Gluster_Affiche_Disque_vm108.png)
### et si on débranche un nœud glusterfs ? ###
Dans cette `vm108` dont le disque dur virtuel vient d'être fraichement transférée sur le GlusterFS, j'ai débranché un des nœuds `hpc02` du Gluster pendant que la `vm108` recevait un fichier .iso via rsync et ensuite je l'ai éteinte. J'ai rebranché le nœud `hpc02` et laisser opérer la magie des fichiers répliqués pendant quelques minutes sans vraiment regarder.
Et puis, sans redémarrer la `vm108` mais en montant les trois images disques théoriquement identiques,
```
guestmount -a /data/brick1/gv0/images/108/vm-108-disk-1.qcow2 -m /dev/sda1 test
```
J'ai été vérifier dans ces disques virtuels si la somme de contrôle du .iso copié pendant le débranchement de `hpc02` était la même ou non.
```
md5sum test/home/tierce/trisquel_8.0_amd64.iso
```
![Nœuds Glusters - somme de contrôle identique alors que un des nœuds fut déconnecté](./assets/Md5_Identique_Alors_Que_Hpc02_Fut_Deconnecte_Reconnecter_Et_Laisse_30min.png)
Et magie, magie, le md5sum le l'image .iso est identique dans les trois images disques montées sur chacun des nœuds du GlusterFS (`hpc01, 02 et 03`) !
Un exemple de début d'infrastructure
------------------------------------
Évidemment les VMs ont besoin d'un ou plusieurs disques pour fonctionner. Ça dépendra de leurs usages.
Il est tout à fait envisageable d'avoir par exemple : Il est tout à fait envisageable d'avoir par exemple :
* 1 Proxmox avec beaucoup de ram * (n) Proxmox avec beaucoup de ram
* 1 VM avec * (n) VM avec
* un disque de boot / system stocké derectement sur le ou les disques du Proxmox ! * un disque de boot / system stocké derectement sur le ou les disques du Proxmox
* un disque dur virtuel en RAM pour des données de cache par exemple ? * (n) disque dur virtuel en RAM pour des données de cache par exemple
* 1 VM avec * (n) VM avec
* un disque de boot / system stocké directement sur le ou les disques du Proxmox * un disque de boot / system stocké directement sur le ou les disques du Proxmox
* un point de montage GlusterFS ou CEPH ou NFS ou autre pour y mettre un gros volume de données. * (n) point de montage GlusterFS ou CEPH ou NFS ou autre pour y mettre un gros volume de données.
* 1 GlusterFS ou CEPH ou NSF ou… pour acceuillir; * (n) GlusterFS ou CEPH ou NSF ou… pour acceuillir;
* des disques durs virtuels de VMs * des disques durs virtuels de VMs
* des sauvegardes de disques durs de VMs * des sauvegardes de disques durs de VMs
* des snapshots de disques durs de VMs * des snapshots de disques durs de VMs
* des données qui seraient accessibles depuis des points de montage dans des VMs * des données qui seraient accessibles depuis des points de montage dans des VMs
Bref… tout ça pour donner un exemple basique alors que beaucoup de combinaisons sont possibles ! En effet, il faudrait cogiter et faire la différence entre les services qui doivent être super rapide et les services avec un gros volume de données. Par services, on pourrait parler de serveurs virtuels (VMs), de conteneurs ou de logiciels. Bref… tout ça pour donner un exemple basique alors que beaucoup de combinaisons sont possibles ! En effet, il faudrait cogiter et faire la différence entre les services qui doivent être super rapides et les services avec un gros volume de données. Par services, on pourrait parler de serveurs virtuels (VMs), de conteneurs ou de logiciels.
Et surtout, qu'est-ce qu'on entend par « super rapide » ou « gros volume de données » ?
Et le reste ?
-------------
Il y a tout un tas d'autres options, paramètres et fonctionnalités qu'il faudrait découvrir. Peut-être qu'un jours je poursuivrai ce document, mais je ne vais pas en faire une documentation sur Proxmox non plus.
Qu'est-ce qu'on entend par « super rapide » ou « gros volume de données » ? Outils utilisés
---------------
- `apt install slurm`, pour afficher des graphes et des stats réseau.
- `apt install nmon`, pour voir les activités disques, réseau, etc.
- `apt install libguestfs-tools`, pour monter les images .qcow2 des vms.
- `apt install terminator`, pour afficher plein de terminal et les piloter en groupe.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment