Virtualisation avec Fedora 15 KVM et SPICE (1/3)

 

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 ...