IMA3/IMA4 2019/2021 P3+ : Différence entre versions
(→Mise en place d’un Reverse Proxy Apache pour l'accès à Proxmox) |
(→Mise en place d’un Reverse Proxy Apache pour l'accès à Proxmox) |
||
Ligne 234 : | Ligne 234 : | ||
Pour la configuration du SSL, il nous faut créer une certificat SSL. | Pour la configuration du SSL, il nous faut créer une certificat SSL. | ||
*'''Création d’un certificat SSL:''' | *'''Création d’un certificat SSL:''' | ||
+ | '''Prérequis:''' Installation du paquet openssl: | ||
+ | apt-get install openssl | ||
+ | '''Création de la clef: '''On se place au niveau du répertoire /etc/ssl/ avant de créer la clef: | ||
+ | sudo openssl genrsa -out server.key 2048 | ||
+ | Cette commande va créer la clé privée avec l'algorithme RSA 2048 bits. | ||
==Semaine 4== | ==Semaine 4== |
Version du 7 juin 2021 à 11:44
Sommaire
Présentation générale
- Nom du projet : Installation d'un orchestrateur de machines virtuelles
- Stagiaire : Souleymane SOW
- Encadrant : Xavier REDON
- Durée : 6 semaines (17 Mai - 25 Juin 2021)
Objectifs
On aura à installer une infrastructure permettant à des utilisateurs de gérer un ensemble de machines virtuelles.
Description
Plusieurs composants sont nécessaires dans cet infrastructure :
- un système de fichiers distribué ;
- un système de virtualisation ;
- l'orchestrateur des machines virtuelles;
Pour le système de fichiers on va regarder du coté de CEPH. Pour l'orchestrateur ProxMox semble incontournable. Le système de virtualisation peut être kvm ou Xen. Le démonstrateur aura à utiliser des disques sur au moins deux serveurs physiques et permettre de faire tourner des machines virtuelles sur au moins deux serveurs physiques. Les mécanismes de haute disponibilité et de migrations serons mis en place.
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
- Logiciels:
- CEPH: Solution libre de stockage distribué (software-defined storage)
- Proxmox: Solution de virtualisation libre basée sur l'hyperviseur Linux KVM, et offrant aussi une solution de containers avec LXC
- KVM/Xen: Logiciel libre de virtualisation
- Matériel:
- Serveur DELL PowerEdge R520
- Serveur DELL PowerEdge 2950
Liste des tâches à effectuer
Calendrier prévisionnel
Réalisation du Projet
Semaine 1
Mise en route du serveur Dell PowerEdge R520
Du à un probléme du capteur thermique, le serveur faisait beaucoup de bruit car les ventilateurs tournaient à fond dés qu'il est en service. Donc on a du trouver une solution afin de pallier à ce probléme. Afin de réduire le bruit c'est à dire réduire la ventilation dans le serveur, on a rajouté des résistances de 47 Ohms et de puissance d'1/2 W sur l'alimentation des ventilateurs. Aprés cela on a pu constater que la ventilation a été considérablement réduite donc on devait faire des tests afin de savoir si la ventilation était convenable pour refroidir assez le systéme en marche. Aprés avoir installé un nouveau Os (Devuan 3) sur notre serveur, on a effectué les configurations réseaux afin de permettre à notre serveur d'avoir accés au réseau de l'école et à Internet. On a installé lm-sensors qui est un logiciel libre pour les systèmes GNU/Linux fournissant des outils pour gérer la température, la tension, la vitesse des ventilateurs et l'humidité.Ensuite on a installé Stress permettant de charger à fond nos CPU afin de nous permettre de tester si la ventilation est suffisante. Aprés avoir stresser les CPU pendant 10 minutes, avec la commande sensors on a pu constater que la température augmentait jusqu'à atteindre une limite d'environ 53°C loin des 97°C de seuil critique.
Un second test a été effectué pour valider les modifications apportées en stressant les cpu pour une durée plus longue avec la commande: sudo stress --cpu 8 --timeout 7200.L'option --cpu 8 permet de générer 8 workers tournant sur la fonction sqrt (). L'option --timeout 7200 permet de spécifier la durée du stress, ici 7200 secondes soit 2 heures. Ensuite, on a mis en place un script shell permettant de monitorer la température de nos CPU chaque 10 minutes:
while true; do sensors sleep 600 done
On observe que durant les deux heures, la température est monté jusqu'à atteindre un niveau de stabilité de 55°C au bout de 30 minutes. Ensuite elle tournait autour de ce seuil jusqu'à la fin du test. On peut affirmer ainsi que la solution mise en place afin de résoudre le probléme de ventilation du serveur PowerEdge R520 a été efficace car assurant un bon refroidissement des CPU mais aussi une grande réduction du bruit lors de sa mise en marche.
Installation de Devuan 3.0 sur nos serveurs
Sur chaque serveur, une distribution de Devuan y a été installé.
Sur notre R520, on dispose ainsi d'un disque de 1 To partitionné comme suit: 100 Go pour l'OS, 2 partitions de 250Go et une de 300Go. Pour la configuration réseau, elle dispose de l'addresse IP @:172.26.145.223.
Sur la PowerEdge 2950, on dispose de 2 disques de 300 Go et une de 70Go, l'OS a été installé sur ce dernier ayant ainsi deux disques disponible. Pour la configuration réseau, elle a comme adresse IP @172.26.145.224.
Semaine 2
Mise en place du systéme de fichiers distribué CEPH
Pour faire fonctionner Ceph, nous aurons besoin de :
- le serveur d’administration du cluster nommé admin. Il permet d'effectuer les tâches d’administration de l'ensemble du cluster.
- le serveur moniteur nommé mon qui permet de suivre l'activité de l'ensemble du cluster.
- les serveurs de données nommés osdX qui stockent les objets
On ajoute d'abord les différentes machines de l'architecture dans le fichier /etc/hosts:
172.26.145.224 osd1 172.26.145.224 osd2 172.26.145.223 admin 172.26.145.223 mon
Installation et configuration de CEPH: Pour installer CEPH, nous allons avoir besoin d’un utilisateur dédié. Il va donc falloir créer un utilisateur commun sur nos 2 serveurs de notre cluster:
- Création de l’utilisateur ceph:
useradd -d /home/ceph -m ceph passwd ceph (pasglop) echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph (Donner le droit sudo sans mot de passe pour tous les logiciels de la machine pour l'utilisateur ceph) sudo chmod 0440 /etc/sudoers.d/ceph
- Mise en place du ssh:
Pour s’installer, CEPH utilise le protocole SSH et nécessite une authentification par paire de clé. On va donc mettre en place une authentification par paire de clé entre notre serveur d’administration (admin) et les autres machines de notre cluster. Sur admin: on bascule sur le user ceph et on crée la paire de clef
su - ceph ssh-keygen ssh-copy-id ceph@osd1 (On envoie la clé publique vers les autres machines de notre cluster)
Enfin pour finir la configuration du SSH du serveur d’administration, il faut créer un fichier config dans /home/ceph/.ssh
Host osd1 Hostname osd1 User ceph Host osd2 Hostname osd2 User ceph Host mon Hostname mon User ceph
- Configuration des dépôts:
On va maintenant configurer les dépôts de notre serveur d’administration pour pouvoir installer la dernière version de CEPH. Les opérations suivantes sont réalisées sur le serveur d’administration uniquement en utilisateur ceph. Mise en place des dépôts CEPH:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - echo deb https://download.ceph.com/debian-luminous/ jessie main | sudo tee /etc/apt/sources.list.d/ceph.list sudo apt update sudo apt install ceph-deploy ntp
On installe ntp pour éviter les dérives d’horloge dans les moniteurs ceph.
- Création du cluster ceph:
Nous allons maintenant installer Ceph sur chacune des machines pour en faire un cluster puis nous les spécialiserons une à une. Sur la machine d'administration (admin) et en tant qu'utilisateur ceph, il faut créer un dossier nommé test-ceph dans lequel les commandes ceph-deploy seront utilisées (ceph-deploy crée des fichiers localement là où il est exécuté):
mkdir /home/ceph/test-ceph
Un cluster Ceph ne peut fonctionner sans moniteur, aussi nous devons commencer par indiquer quelle machine aura ce rôle futur. Pour ce faire, la commande suivante commence le déploiement d'un nouveau cluster en ajoutant une machine moniteur dans ce cluster. Elle crée également trois fichiers : un fichier de clefs, un fichier de log et un fichier de configuration.
ceph-deploy new mon
Nous allons ensuite installer l'ensemble des programmes et librairies nécessaires à Ceph sur l’autre serveur. À la fin, nos 2 serveurs seront tous identiques et leur rôle leur sera attribué par la suite.
ceph-deploy install admin mon osd1 osd2
Mais nous rencontrons l'erreur suivante lors de l'installation:
[admin][ERROR ] RuntimeError: command returned non-zero exit status: 100 [ceph_deploy][ERROR ] RuntimeError: Failed to execute command: env DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get --assume-yes -q --no-install-recommends install ceph ceph-osd ceph-mds ceph-mon radosgw
Mise en place du système de fichiers distribué CEPH (Suite)
Le problème rencontré précédemment lors de l'installation a pu être résolu en installant des paquets manquants : radosgw et gnupg1
Un autre problème lié à l'OS de nos serveurs est survenu lors de la spécification de la machine moniteur avec la commande :
ceph-deploy mon create mon ("mon" étant mon moniteur)
En effet Devuan est "systemd-free" donc ne peut exécuter les commandes systemctl or notre commande s’exécute avec. Pour résoudre ce problème, on doit trouver une procédure d'installation de CEPH avec sysv-init disponible sur Devuan.
Semaine 3
On a pas pu trouver une alternative d'installation de Ceph sans Systemd. Lors des recherches de solutions, il s'est trouvé que Proxmox était systemd dépendant donc ne pourrait etre installé sur nos deux serveurs. On a décidé de mettre en place des machines virtuelles et y installer un Debian 10 pour pouvoir mettre en place nos solutions.
Installation machine virtuelle
Installation des paquets requis
Pour vérifier que les microprocesseurs de nos machines permettent la virtualisation avec KVM on tape la commande suivante:
grep -E 'vmx|svm' /proc/cpuinfo &>/dev/null && echo "La virtualisation est possible sur cette machine." || echo "Le microprocesseur de cette machine ne permet pas d'utiliser la virtualisation avec KVM."
On installer ensuite les paquetages qemu-kvm et libvirt-daemon
apt-get install qemu-system libvirt-clients libvirt-daemon-system virtinst
- QEMU est un logiciel libre de machine virtuelle, pouvant émuler un processeur et, plus généralement, une architecture différente si besoin. Il permet d'exécuter un ou plusieurs systèmes d'exploitation via les hyperviseurs KVM et Xen, ou seulement des binaires, dans l'environnement d'un système d'exploitation déjà installé sur la machine.
- libvirt est une bibliothèque, une API, un daemon et des outils en logiciel libre de gestion de la virtualisation. Elle est notamment utilisée par KVM, Xen, VMware ESX, QEMU et d'autres solutions de virtualisation. Elle est notamment utilisée par la couche d'orchestration des hyperviseurs.
Ensuite on utilise la commande adduser pour ajouter notre nom d'utilisateur aux groupes kvm et libvirt:
adduser pifou kvm & adduser pifou libvirt
Installation de notre VM Proxmox
Avant de lancer l'installation, il nous faut au préalable avoir notre fichier d'installation sur notre machine avant de lancer la commande d'installation suivante:
virt-install --name proxmox --ram 4096 --disk path=/var/lib/libvirt/images/proxmox.img,size=20 --vcpus 2 --os-type linux --os-variant debian10 --network network=default --graphics none --console pty,target_type=serial --location /var/lib/libvirt/boot/debian-10.9.0-amd64-netinst.iso --extra-args 'console=ttyS0,115200n8 serial'
- --name: Nom de la machine
- --ram: spécifie la quantité de mémoire qu'utilise la machine virtuelle en mégaoctets
- --disk path: montre le chemin d'accès au disque virtuel qui peut être un fichier, une partition ou un volume logique. Dans cet exemple, un fichier nommé proxmox.img dans le répertoire /var/lib/libvirt/images/, avec une taille de 20 gigaoctets
- --location: Fichier à utiliser comme CDROM d’installation virtuel
- --os-type: Optimise la configuration pour un type de système d'exploitation (Linux/windows)
- --os-variant: Optimise davantage la configuration pour une variante de système d'exploitation spécifique(Debian 10/ Ubuntu 20)
- --vcpus: Nombre de processeurs virtuels à configurer pour notre vm
- --network: Connectez la vm au réseau de la machine hôte
A la fin de l'installation on pourra gérer notre machine avec les commandes suivantes:
- Lister les machines virtuelles
virsh list --all
- Puis, pour démarrer, arrêter ou encore redémarrer une machine, nous pourrons utiliser les commandes suivantes :
virsh start proxmox virsh shutdown proxmox virsh reboot proxmox
- Se connecter à la console de notre VM
virsh console proxmox
- D’autre part, pour forcer l’arrêt de notre VM :
virsh destroy proxmox
Mise en place de Proxmox
Dans cette partie on va décrire les étapes pour l'installation de Proxmox sur un systéme Debian 10
- Ajout d’une entrée dans /etc/hosts pour notre @ip:
Le nom d’hôte de notre machine doit pouvoir être résolu avant de commencer l'installation de Proxmox sur notre Debian
127.0.0.1 localhost.localdomain localhost 192.168.122.10 proxmox1.plil.info proxmox1
On teste notre configuration avec la commande hostname --ip-address qui nous renvoie notre adresse IP si tout est ok!
- Ajout du répos Proxmox
On ajoute le répos:
echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
Et sa clé :
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
On la rend executable :
chmod +r /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
On met à jour nos dépôts:
sudo apt update && sudo apt full-upgrade
- Installation des packages de Proxmox VE
Pour commencer l'installation on lance :
apt install proxmox-ve postfix open-iscsi
A la fin de l'installation, le système reboot, et démarre automatiquement sur le kernel Proxmox. Pour accéder à la page d'administration de notre Proxmox à partir du navigateur d'une machine de TP de la salle, on va mettre en place un Reverse Proxy au niveau de nos serveurs pour faciliter l'administration. On rappelle que l'interface d'aministration de Proxmox est disponible à l'adresse IP de la machine hote (notre VM) dans le port 8006.
Mise en place d’un Reverse Proxy Apache pour l'accès à Proxmox
Le reverse proxy sera une passerelle permettant aux hôtes appartenant au réseau 172.26.145.0/24 d’accéder au réseau virtuel interne de nos serveurs Cordouan 192.168.122.0/24 et Container 192.168.123.0/24. Il nous faudra spécifier à notre machine d'administration appartenant au réseau 172.26.145.0 la route lui permettant d'accéder au réseau virtuel de nos Vms grace à la commande ip route add.
- Installation Apache:
Dans un premier temps il nous faut installer Apache2:
apt-get install apache2
- Activation des modules utilisés:
Pour utiliser Apache en mode proxy inverse, il nous faut activer les 2 modules proxy et proxy_http via la commande a2enmod et les modules ssl pour une connexion sécurisée https
a2enmod ssl proxy rewrite proxy_connect proxy_http
Le module proxy permet l’implémentation d’un serveur mandataire / passerelle et le module proxy_http apporte le support des requêtes HTTP et HTTPS au module proxy. Pour activer ces services, il est nécessaire de redémarrer apache.
service apache2 restart
- Mise en place du Virtualhost:
La configuration suivante correspond
vi /etc/apache2/sites-available/proxmox.polytech-lille.fr.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName proxmox.polytech-lille.fr ProxyPreserveHost On ProxyRequests Off ProxyErrorOverride Off ProxyPass / https://192.168.122.10:8006/ ProxyPassReverse / https://192.168.122.10:8006/ SSLEngine on SSLCertificateFile /etc/ssl/server.crt SSLCertificateKeyFile /etc/ssl/server.key SSLProxyEngine On SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off SSLProxyVerify none </VirtualHost> </IfModule>
ServerName permet de spécifier le nom de domaine voulu;ProxyPass et ProxyPassReverse donnent la correspondance entre le path voulu et l’adresse du serveur destinataire et ajustent l’URL dans les en-têtes HTTP. ProxyRequests permet d’activer et de désactiver la fonctionnalité de serveur mandataire. Pour la configuration du SSL, il nous faut créer une certificat SSL.
- Création d’un certificat SSL:
Prérequis: Installation du paquet openssl: apt-get install openssl Création de la clef: On se place au niveau du répertoire /etc/ssl/ avant de créer la clef: sudo openssl genrsa -out server.key 2048 Cette commande va créer la clé privée avec l'algorithme RSA 2048 bits.