Habitué à faire de la virtualisation avec Xen, j'ai été amené à travailler sur du KVM avec SPICE pour une plateforme de virtualisation de Desktop (VDI), de plus ces technologies étant bien intégrées dans le projet Fedora j'ai du remettre les mains dans le camboui sur une distribution RedHat like.
Je vous invite à lire cet article de Philippe Scoffoni sur la présentation de ces technologies.
Pour ne pas trop surcharger, je vais découper cette mise en place en 3 articles.
Dans cette première partie je vais mettre en place l'infrastructure de travail.
Le matériel
Il va s'en dire que pour mettre en place cette architecture, il faut du matériel récent.
Le serveur
Il faut une machine avec un (des) processeur(s) supportant les technologies de virtualisation. Dans mon cas :
- un processeur Intel Q6660
- 8 Go de Ram
- 1 Disque SATA d'1 To
- 6 interfaces réseau (2 sur la carte mère en Gbit et 4 en 100Mbit)
- une carte d'interfaces USB
- architecture x86_64
Le client
Le poste client est un MiniPc N20 Giada :
- Processeur Intel Atom D525
- Carte Vidéo NVIDIA ION
- 2 Go de Ram
- Carte Réseau Gigabit et Wifi
- 300 Go de disque Dur
- architecture x86_64 (important pour le client SPICE)
Réseau
Pour le réseau interne, un petit switch Gigabit Netgear GS108.
Maintenant qu'on a fait connaissance avec tout cela passons aux choses sérieuses.
Mise en place du serveur
Installation
Une fois le média d'installation téléchargé, on commence l'installation de la Fedora 15 (version RC à l'heure ou je tape cet article). Je passe sur la procédure d'installation Fedora très bien faite. Je choisi simplement d'utiliser du lvm pour mes différentes partitions.
Je fais une installation minimale pour installer les paquets dont j'aurai besoins par la suite et pas surcharger le système.
Premier démarrage
Une fois redémarré, première surprise le réseau n'est pas activé par défaut. Les habitudes Debian d'avoir les services activés à l'installation ...
Première chose à prendre en main est systemd qui remplace le mode d'init SystemV et UpStart.
Pour activer le réseau et l'activer aux prochains démarrage :
# systemctl start network.service
# systemctl enable network.service
Et un petit upgrade des paquets avant de continuer :
# yum upgrade
Paramétrage du réseau
Je vais dans un premier temps utiliser deux interfaces réseau :
- la première reliée à la Box Internet pour relier l'infrastructure à Internet
- la seconde qui sera transformée en bridge sur lequel seront interfacés les machines virtuelles et le switch vers les machines réelles
L'interface reliée à Internet
Le fichier de conf dans mon cas est /etc/sysconfig/network-script/ifcfg-em1 :
DEVICE="em1"
BOOTPROTO="static"
ONBOOT="yes"
HWADDR=00:0E:A6:F8:8D:44
TYPE=Ethernet
IPADDR="192.168.1.76"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System em1"
UUID=1dad842d-1912-ef5a-a43a-bc238fb267e7
LAST_CONNECT=1304776318
La seconde interface le bridge
On va devoir transformer la seconde interface en bridge pour pouvoir interfacer nos machines virtuelles sur le réseau.
On installe le paquet nécessaire à la gestion du bridge :
# yum install bridge-utils
On peut ensuite créer le bridge en créant le fichier /etc/sysconfig/network-script/ifcfg-br0 :
DEVICE="br0"
TYPE="Bridge"
BOOTPROTO="static"
ONBOOT="yes"
DELAY="0"
IPADDR="192.168.37.1"
NETMASK="255.255.255.0"
Comme nous voulons connecter des machines réelles sur les machines virtuelles nous allons ajouter la seconde interface réseau dans le bridge avec le fichier /etc/sysconfig/network-script/ifcfg-em2 :
DEVICE="em2"
HWADDR="00:0E:A6:F8:A0:6F"
ONBOOT="yes"
BRIDGE="br0"
On redémarre le tout :
# systemctl start network.service
# systemctl enable network.service
On vérifie que toutes les interfaces sont bien démarrées.
IpForwarding, Masquerading ...
Pour se simplifier la vie sur cette partie et pour avoir la possibilité de brider des ports j'installe shorewall qui va servir à configurer mon réseau :
# yum install shorewall
# cd /etc/shorewall
# rm -rf
# cp /usr/share/doc/shorewall-4.4.17/Samples/two-interfaces/* /etc/shorewall/
On adapte les fichiers interfaces, policy, masq (attention utiliser br0 comme interface loc et non pas em2).
On active le service :
# systemctl start shorewall.service
# systemctl enable shorewall.service
DHCP
Je met en place un service dhcp pour les machines virtuelles et les machines réelles sur le réseau interne.
# yum install dhcp
# vi /etc/dhcpd/dhcpd.conf
ddns-update-style none;
ignore client-updates;
authoritative;
subnet 192.168.37.0 netmask 255.255.255.0 {
option routers 192.168.37.1; # passerelle par défaut
option subnet-mask 255.255.255.0; # masque de sous-réseau
option domain-name "lan"; # nom de domaine
option domain-name-servers 192.168.1.254;# serveurs DNS
range 192.168.37.100 192.168.37.200; # plage d’adresse
default-lease-time 21600; # durée du bail en secondes
max-lease-time 43200 ; # durée maxi du bail en sec.
}
On active le serveur dhcp :
# systemctl start dhcpd.service
# systemctl enable dhcpd.service
On pourrait en plus rajouter un serveur mails et un serveur bind pour faire du cache DNS et la gestion d'une zone locale.
Installation des paquets pour la virtualisation
Maintenant que notre réseau est fonctionnel, on va mettre en place la partie virtualisation. Pour cela les choses ont été bien faites on va installer le groupe de paquets virtualisation :
# yum install @virtualization
On a installé beaucoup de choses, pour vérifier que tout est "ok" un petit démarrage ne fera pas de mal.
Le client
Pour le client j'installe une Fedora 15 bureautique avec Gnome Shell et le client spice.
# yum install spice-client
A l'avenir, une idée est de démarrer le client via PXE, boot qui démarrerait directement un client spice en plein écran.
On verra plus tard ...