Hébergement de VM KVM sur IP failover OVH sous Ubuntu 18.04
Dans cet article je décris comment installer l’hyperviseur KVM sur une machine Ubuntu 18.04 dédiée hébergée chez OVH et faire en sorte de faire tourner une VM sur sa propre IP publique (IP Failover OVH)
Avant-propos
Dans le reste de cette procédure on considère:
-
qu’on a déjà installé l’OS de l’hyperviseur en Ubuntu 18.04
-
qu’on a déjà téléchargé les ISOs d’installation d’Ubuntu 18.04 et Debian 9 sur l’hyperviseur dans un répertoire /isos
-
Que l’interface réseau principale de notre hyperviseur se nomme
eno1
, adapter au besoin -
Que notre poste client fonctionne sur Ubuntu (ça ne devrait pas être différent pour Debian)
-
Qu’on sait installer un OS Ubuntu ou Debian à partir d’une image ISO
-
Qu’on sait se connecter par clé SSH à l’hyperviseur
Actions dans le panneau d’administration d’OVH
-
Sur OVH manager, aller dans la partie
Serveur
>IP
et cliquer surCommander des IP additionnelles
. -
Suivre la procédure en sélectionnant le serveur cible, la source de l’IP, …
-
Après quelques minutes la nouvelle IP va apparaître sur la page de gestion des IPs. Sélectionner la nouvelle adresse et ajouter une MAC virtuelle via les
…
en bout de ligne. Choisir une MAC du style OVH
Configuration de l’hyperviseur
On s’attaque maintenant à la configuration de la machine physique, la préparer à accueillir les VMs.
Configuration du bridge
En cas de mauvaise manipulation dans cette section, vous perdrez accès à votre serveur, il se peut que vous deviez redémarrer la machine en mode rescue pour reprendre la main dessus et modifier à nouveau les fichiers. Pour une raison que j’ignore je n’ai jamais reçu les emails avec les informations de connexion après le reboot en mode rescue, j’ai dû aller dans |
Par défaut lorsqu’on déploie une VM, KVM va proposer d’utiliser un réseau NAT. C’est un réseau interne à l’hyperviseur, la VM pourra accéder à Internet mais Internet n’aura aucune connaissance de cette VM. On veut créer un bridge qui permettra de présenter directement la VM sur Internet.
Les machines Ubuntu 18.04 déployées par le panneau d’administration d’OVH utilisent systemd uniquement pour la configuration du réseau et non netplan.
On modifie donc les fichiers présents dans /etc/systemd/network/
:
-
Ne touchez pas au fichier
50-public-interface.link
-
renommez le fichier
50-default.network
en50-default.network.bak
-
Créez le fichier
eno1.network
:[Match] Name=eno1 (1) [Network] Bridge=br0 (2) [Network] DHCP=no
1 C’est à travers l’interface physique eno1 que nos VMs se connecteront directement au réseau 2 Le bridge qu’on va créer s’appellera br0, c’est lui qui fera le lien entre l’interface physique et les VMs -
Créez le fichier
br0.netdev
:[NetDev] Name=br0 Kind=bridge
-
créez le fichier
br0.network
:[Match] Name=br0 [Link] MACAddress=xx:xx:xx:xx:xx:xx (1) [Network] Address=xx.xx.xx.xx/24 (2) Gateway=xx.xx.xx.254 (3) DNS=213.186.33.99
1 L’adresse mac de votre interface eno1, vérifiez avec la commande ip link
2 L’adresse IP de votre interface eno1, vérifiez avec la commande ip -4 a
3 L’adresse IP de votre passerelle, vérifiez avec la commande ip route
, c’est l’adresse qui apparaît sur la lignedefault
Vous devriez vous retrouver avec ces quatre fichiers:
-
50-public-interface.link
-
br0.netdev
-
br0.network
-
eno1.network
Installez le paquet bridge-utils:
apt update && apt install -y bridge-utils
Après avoir vérifié le contenu des fichiers, redémarrez le service systemd-networkd: systemctl restart systemd-networkd
Si vous avez tout configuré correctement vous verrez une interface br0
apparaître en exécutant la commande ip -4 a
, dans le pire des cas, vous aurez besoin du mode rescue.
Si tout s’est bien passé, il est sage de redémarrer la machine pour être sûr que tout continuera à fonctionner le jour où ça se produira.
Installation de KVM
Il suffit d’installer ces quelques paquets:
apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils
Je n’installe pas virt-manager (l’interface graphique de gestion de l’hyperviseur) sur le serveur, je préfère l’avoir sur ma machine de bureau, ça me semble plus simple et plus pratique que de devoir forwarder mon serveur X11 dans une session ssh
|
Configuration de KVM
Avant de pouvoir déployer des VMs, il y a quelques petites choses à modifier dans notre hyperviseur.
Tout d’abord le bridge qu’on aura créé précédemment ne sera pas visible dans l’interface virt-manager, pour y remédier:
-
Créer un fichier de définition de bridge
cat << EOCONF > bridge-network.xml <network> <name>host-bridge</name> <forward mode="bridge"/> <bridge name="br0"/> </network> EOCONF
-
Déclarer le bridge dans libvirt
virsh net-define ./bridge-network.xml
-
S’assurer que le bridge démarre automatiquement
virsh net-autostart host-bridge
Puisque pour pouvoir déployer mes VMs je vais avoir besoin d’une interface graphique, je vais m’en servir pour le point qui suit, à savoir la création d’un pool de stockage pour mes images d’OS.
Pour plus de facilité il vaut mieux avoir autorisé notre clé publique ssh sur le compte root de l’hyperviseur. Il faut donc:
-
installer le paquet de l’interface graphique
sudo apt-get install -y virt-manager
-
lancer l’application
Virtual Machine Manager
(ou lancer la commandevirt-manager
) -
Cliquer sur
Fichier
>Ajouter une connexion…
-
Cocher
Se connecter à un hôte distant
-
Laisser la méthode à
SSH
, l’utilisateur àroot
et renseigner l’adresse IP ou le nom de domaine de l’hyperviseur dans le champNom d’hôte
-
Une fois connecté, faire un clic droit sur le serveur dans la liste et sélectionner
Détails
-
Aller dans un l’onglet
Stockage
et cliquer sur le petit signe+
pour ajouter un pool -
Donner un nom au pool,
isos
par exemple puis cliquer sur suivant -
Entrer le chemin
/isos
et cliquer sur finish -
Cliquer sur le nouveau pool dans la liste et cocher la case
Démarrage automatique
Installation d’une VM
On a normalement tout ce qu’il faut pour installer une VM alors c’est parti.
-
Lancer
Virtual Machine Manager
et se connecter à l’hyperviseur -
Cliquer sur le bouton
Créer une nouvelle machine virtuelle
-
Choisir l’option
Media d’installation local
puis cliquer surSuivant
-
Sélectionner
Utiliser l’image ISO
et cliquer surParcourir
pour choisir l’image correspondante dans le poolisos
-
Suivre la procédure de création. À l’écran de choix de l’interface réseau virtuelle, laisser l’interface
NAT
par défaut, nous la modifierons après l’installation. La VM se lance à la fin et démarre à partir de l’image ISO. -
Installer l’OS normalement
Configuration de la VM
Une fois que l’OS est installé, nous allons faire en sorte d’affecter l’IP failover à notre VM.
Debian 9
Debian 9 utilise les anciens fichiers de configuration présents dans /etc/network/
.
-
Modifier le fichier
/etc/network/interfaces
:auto lo iface lo inet loopback # The primary network interface allow-hotplug ens3 (1) iface ens3 inet static address xxx.xxx.xxx.xxx (2) netmask 255.255.255.255 gateway xxx.xxx.xxx.254 (3) dns-nameservers 213.186.33.99
1 À adapter au nom de l’interface réseau de la VM 2 Adresse IP failover créée plus tôt dans OVH Manager 3 Adresse IP de la passerelle de l’hyperviseur définie dans la partie précédente -
Une fois ceci fait, modifier les propriétés de la VM dans
Virtual Machine Manager
(double clic sur la VM puis ongletAfficher les détails du matériel virtuel
). -
Aller sur l’interface réseau (
NIC xx:xx:xx
) et en face deSource réseau
, sélectionnerhost-bridge: Bridge Network
. -
Basculer à nouveau sur l’interface de la VM et redémarrer le réseau:
systemctl restart networking
. -
Une fois de plus si tout fonctionne correctement vérifier que c’est toujours le cas après le redémarrage.
Ubuntu 18.04
Ubuntu 18.04 utilise netplan pour la configuration du réseau.
-
Supprimer tous les fichiers du répertoire
/etc/netplan
et y créer un fichier50-static.yml
:network: version: 2 renderer: networkd ethernets: ens3: (1) addresses: - xxx.xxx.xxx.xxx/32 (2) nameservers: addresses: - 213.186.33.99 search: [] optional: true routes: - to: 0.0.0.0/0 via: xxx.xxx.xxx.254 (3) on-link: true
1 À adapter au nom de l’interface réseau de la VM 2 Adresse IP failover créée plus tôt dans OVH Manager 3 Adresse IP de la passerelle de l’hyperviseur définie dans la partie précédente -
Une fois ceci fait, modifier les propriétés de la VM dans
Virtual Machine Manager
(double clic sur la VM puis ongletAfficher les détails du matériel virtuel
). -
Aller sur l’interface réseau (
NIC xx:xx:xx
) et en face deSource réseau
, sélectionnerhost-bridge: Bridge Network
. -
appliquer la configuration
netplan apply
-
Si tout fonctionne correctement vérifier que c’est toujours le cas après le redémarrage.
Ça y est, vous avez maintenant un hyperviseur joignable à une adresse IP sur Internet et une machine virtuelle joignable sur une IP différente :)