Installation d'un serveur Debian - hôte OpenVZ + KVM
Il s'agit dans cette documentation d'installer un serveur physique Debian qui soit capable d'exécuter aussi bien des machines virtuelles de type OpenVZ que KVM.
Pré-requis
OpenVZ
Installation des paquetages
Sur Debian 4
Taper les commandes suivantes pour mettre à jour le fichier sources.list, afin de référencer un dépot de paquets permettant d'installer OpenVZ sur Debian 4 :
# echo -e "\ndeb http://download.openvz.org/debian-systs etch openvz" >> /etc/apt/sources.list # wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add -
Faire ensuite :
# apt-get install vzquota vzprocps vzctl # apt-get install fzakernel-2.6.18-686-bigmem (sur serveur 32 bits) # apt-get install fzakernel-2.6.18-amd64 (sur serveur 64 bits)
- Modifier le /boot/grub/menu.lst pour utiliser le bon noyau
- Installer le paquet vzctl-ostmpl-debian ou le récupérer sur un serveur déjà installé (le modèle se trouve dans /var/lib/vz/template/cache/)
- Vérifier en faisant un rcconf que vz est bien sélectionné.
- Rajouter ceci à la fin de /etc/sysctl.conf (ou vérifier que c'est bien présent)
#-- OpenVZ begin --# # On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # TCP Explict Congestion Notification #net.ipv4.tcp_ecn = 0 # we do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 #-- OpenVZ end --#
- Rebooter
Sur Debian 5 et 6
C'est un peu plus simple car OpenVZ est intégré dans les dépots Debian. En revanche, les dépots n'ont pas tous les paquets (par ex. vzdump et vzprocps) mais ce manque ne nous gêne pas.
- Faire
# apt-get update # apt-get install linux-image-openvz-686 (sur serveur 32 bits) # apt-get install linux-image-openvz-amd64 (sur serveur 64 bits) # apt-get install vzctl vzquota
- Modifier le /boot/grub/menu.lst (Debian 5) pour utiliser le bon noyau
- Récupérer des templates sur le site openvz ou les récupérer sur un serveur déjà installé (le modèle se trouve dans /var/lib/vz/template/cache/)
- Vérifier en faisant un rcconf que vz est bien sélectionné.
- Rajouter ceci à la fin de /etc/sysctl.conf (ou vérifier que c'est bien présent)
#-- OpenVZ begin --# # On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # TCP Explict Congestion Notification #net.ipv4.tcp_ecn = 0 # we do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 #-- OpenVZ end --#
- Rebooter
Préparation pour hébergement de VE avec réseau veth
Cette section n'est pas nécessaire si les VE sont uniquement du type venet. Mais il est possible de préparer le serveur pour le cas où il serait amené à héberger des VE de type veth. Doc OpenVZ : http://wiki.openvz.org/Virtual_Ethernet_device.
Dans /etc/network/interfaces, transformer la configuration réseau en bridge, par exemple pour debian 4/5:
auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto vzbr0 iface vzbr0 inet static address 10.x.x.x netmask 255.255.x.x broadcast 10.x.x.x gateway 10.x.x.x bridge_ports eth0 up echo 1 > /proc/sys/net/ipv4/conf/vzbr0/proxy_arp up echo 1 > /proc/sys/net/ipv4/conf/vzbr0/forwarding
Il sera certainement nécessaire d'installer le paquet bridge-utils et ifenslave.
# apt-get install bridge-utils ifenslave-2.6
Créer le fichier /etc/vz/vznet.conf avec le contenu suivant :
#!/bin/bash EXTERNAL_SCRIPT="/usr/local/sbin/vznetaddbr"
Créer le fichier /usr/local/sbin/vznetaddbr avec le contenu suivant :
#!/bin/bash # /usr/local/sbin/vznetaddbr # a script to add virtual network interfaces (veth's) in a CT to a bridge on CT0 CONFIGFILE=/etc/vz/conf/$VEID.conf . $CONFIGFILE VZHOSTIF=`echo $NETIF |sed 's/^.*host_ifname=\(.*\),.*$/\1/g'` if [ ! -n "$VZHOSTIF" ]; then echo "According to $CONFIGFILE CT$CTID has no veth interface configured." exit 1 fi if [ ! -n "$VZHOSTBR" ]; then echo "According to $CONFIGFILE CT$CTID has no bridge interface configured." exit 1 fi echo "Adding interface $VZHOSTIF to bridge $VZHOSTBR on CT0 for VE$VEID" /sbin/ifconfig $VZHOSTIF 0 echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/forwarding /usr/sbin/brctl addif $VZHOSTBR $VZHOSTIF exit 0
Puis le rendre éxecutable
# chmod +x /usr/local/sbin/vznetaddbr
KVM
Je n'ai testé la virtualisation complète par KVM que sur des matériels équipés de processeurs supportant la virtualisation complète. Pour déterminer si le processeur le supporte, vérifier si la commande suivante retourne des résultats. Si oui, le processeur supporte une virtualisation complète avec KVM.
# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Installation sur Debian 6
# apt-get install virt-manager qemu-kvm