« L'hyperviseur Xen sous Debian Wheezy » : différence entre les versions

Aller à la navigation Aller à la recherche
m
Aucun résumé des modifications
 
(24 versions intermédiaires par le même utilisateur non affichées)
Ligne 162 : Ligne 162 :
<pre>
<pre>
$ mount /dev/sda1 /mnt
$ mount /dev/sda1 /mnt
$ debootstrap --arch=amd64 squeeze /mnt
$ debootstrap --arch=amd64 wheezy /mnt
...
...
I: Base system installed successfully
I: Base system installed successfully
Ligne 179 : Ligne 179 :
Editez le fichier <code>/etc/apt/sources.list</code> :
Editez le fichier <code>/etc/apt/sources.list</code> :
<pre>
<pre>
deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb http://ftp.fr.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian wheezy main contrib non-free


#Sec
#Sec
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free


#anciennement debian-volatile
#anciennement debian-volatile
deb http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
deb http://ftp.fr.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian wheezy-updates main contrib non-free
</pre>
</pre>


Ligne 281 : Ligne 281 :


=Installation de Xen=
=Installation de Xen=
<pre>aptitude install xen-hypervisor-amd64 linux-image-2.6-xen-amd64 linux-headers-2.6-xen-amd64 xen-utils-4.0 \  
<pre>aptitude install xen-hypervisor-amd64 xen-linux-system-amd64 xen-utils \  
xen-tools bridge-utils xfsprogs</pre>
xen-tools bridge-utils xfsprogs</pre>


Ligne 312 : Ligne 312 :
Vérifier la présence du fichier <code>/etc/xen/scripts/hotplugpath.sh</code>. S'il n'existe pas, créez le :
Vérifier la présence du fichier <code>/etc/xen/scripts/hotplugpath.sh</code>. S'il n'existe pas, créez le :
<pre>touch /etc/xen/scripts/hotplugpath.sh</pre>
<pre>touch /etc/xen/scripts/hotplugpath.sh</pre>
==désactiver le balooning==
Par défaut, l'installation debian de xen alloue de manière dynamique la mémoire allouée à l'hyperviseur (au dom0). Sur un host de virtualisation xen, il est cependant préférable d'allouer de manière fixe de la mémoire au dom0.
Modifier la ligne <code>GRUB_CMDLINE_XEN</code> dans <code>/etc/default/grub</code> :
<pre>
GRUB_CMDLINE_XEN="dom0_mem=512M"
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M"
</pre>
Puis mettez à jour la configuration de grub :
<pre>update-grub</pre>
Modifiez ensuite les lignes suivantes dans <code>/etc/xen/xend-config.sxp</code> :
<pre>
(dom0-min-mem 512)
(enable-dom0-ballooning no)
</pre>
Il faut bien évidemment rebooter pour appliquer ces paramètres.
==Forcer l'arrêt des VMs (shutdown) lors du reboot de xen==
Par défaut, si l'hyperviseur reboot, Xen sauvegarde l'état des VMs plutôt que de les shutdown proprement. Si vous voulez vous affranchir de ce comportement, modifiez <code>/etc/default/xendomains</code> :
<pre>
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""
</pre>


=Configuration réseau=
=Configuration réseau=
Ligne 318 : Ligne 345 :
Dans cette configuration, il est nécessaire d'avoir des IPFailOver disponibles ainsi que générer des adresses MAC pour vos VMs. Vos VMs seront ensuite directement accessible à partir du réseau internet.
Dans cette configuration, il est nécessaire d'avoir des IPFailOver disponibles ainsi que générer des adresses MAC pour vos VMs. Vos VMs seront ensuite directement accessible à partir du réseau internet.


Vérifier la présence des lignes suivantes dans /etc/xen/xend-config.sxp :
Vérifier la présence de la ligne suivante dans /etc/xen/xend-config.sxp :
<pre>
<pre>
(vif-script vif-bridge)
(vif-script vif-bridge)
(network-script network-bridge)
(network-script 'network-bridge bridge=br0')
</pre>
</pre>


Par défaut, xen utilisera l'interface eth0. Si vous souhaitez utiliser une autre interface réseau (eth1 par exemple) utilisez :
Editez le fichier <code>/etc/network/interfaces</code> de cette façon :
<pre>
<pre>
(vif-script vif-bridge)
auto lo
(network-script 'network-bridge netdev=eth1')
iface lo inet loopback
 
auto br0
iface br0 inet static
        address 91.121.117.116
        netmask 255.255.255.0
        network 91.121.117.0
        broadcast 91.121.117.255
        gateway 91.121.117.254
        bridge_ports eth0
</pre>
</pre>


Par défaut depuis Xen 3.3, le bridge sera nommé eth0 et non plus xenbr0 (en fait, l'interface réseau physique devient peth0 tandis que eth0 devient un bridge). Vous pouvez vérifier cela avec <code>brctl show</code>
Il faudra ensuite rebooter
 
<pre>reboot</pre>
après vos modifications, redémarrez le démon xend :
<pre>/etc/init.d/xend restart</pre>
 
Note: si votre hébergeur refuse le mode bridge, il faut passer par le mode route :
<pre>
(network-script 'network-route netdev=eth0')
(vif-script    vif-route)
</pre>


==NAT==
==NAT==
Ligne 374 : Ligne 402 :
=Configuration de Xen-Tools pour créer automatiquement des machines virtuelles debian=
=Configuration de Xen-Tools pour créer automatiquement des machines virtuelles debian=


Par défaut sous debian squeeze, le fichier <code>/etc/xen-tools/xen-tools.conf</code> est adapté à la création de VMs debian squeeze.
Par défaut sous debian wheezy, le fichier <code>/etc/xen-tools/xen-tools.conf</code> est adapté à la création de VMs debian wheezy.


Notre configuration permettra :
Notre configuration permettra :
* de créer les partitions des VMs sur le LVM
* de créer les partitions des VMs sur le LVM
* d'utiliser debootstrap pour créer des VMs vierges sous debian squeeze
* d'utiliser debootstrap pour créer des VMs vierges sous debian wheezy
* de configurer automatiquement l'ip sur la VM
* de configurer automatiquement l'ip sur la VM


Ligne 391 : Ligne 419 :
netmask    = 255.255.255.0
netmask    = 255.255.255.0
broadcast  = IP-du.dom0.255
broadcast  = IP-du.dom0.255
bridge = br0
</pre>
</pre>


Ligne 408 : Ligne 437 :
*<code>swap</code> : défini la taille du swap par défaut pour les VMs
*<code>swap</code> : défini la taille du swap par défaut pour les VMs
*<code>fs</code> : défini le système de fichier à utiliser pour les VMs. Généralement ext3 ou ext4.
*<code>fs</code> : défini le système de fichier à utiliser pour les VMs. Généralement ext3 ou ext4.
*<code>image</code> : défini s'il faut utiliser des images complètes (<code>full</code>) ou a taille variable (<code>sparse</code>) pour les VMs.
*<code>image</code> : défini s'il faut utiliser des images complètes (<code>full</code>) ou a taille variable (<code>sparse</code>) pour les VMs. <code>full</code> donnera les meilleurs performances disque.
*<code>install-method</code> : défini la méthode d'installation par défaut pour les VMs. Les choix possibles sont :
*<code>install-method</code> : défini la méthode d'installation par défaut pour les VMs. Les choix possibles sont :
**<code>debootstrap</code>
**<code>debootstrap</code>
Ligne 536 : Ligne 565 :
#
#
#
#
installDebianPackage ${prefix} locales #already installed in debian-squeeze domU
installDebianPackage ${prefix} locales #already installed in debian-wheezy domU
installDebianPackage ${prefix} ntp
installDebianPackage ${prefix} ntp
installDebianPackage ${prefix} console-data
installDebianPackage ${prefix} console-data
Ligne 601 : Ligne 630 :
#
#


gw=`cat /etc/xen-tools/xen-tools.conf | grep gateway`
gw=`cat /etc/xen-tools/xen-tools.conf | grep "gateway ="`
if [ ! ${gw:0:1} = "#" ]; then
if [ ! ${gw:0:1} = "#" ]; then
         gateway=`echo $gw | cut -f 2 -d "="`
         gateway=`echo $gw | cut -f 2 -d "="`
Ligne 607 : Ligne 636 :
         echo up route add default gw $gateway >> ${prefix}/etc/network/interfaces
         echo up route add default gw $gateway >> ${prefix}/etc/network/interfaces
fi
fi
sed -i -e 's/gateway/#gateway/g' ${prefix}/etc/network/interfaces


#
#
Ligne 614 : Ligne 644 :
#
#
#
#
echo '
#! /bin/sh
### BEGIN INIT INFO
# Provides:            sshguard
# Required-Start:      $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:       
# Short-Description:    sshguard
### END INIT INFO
case "$1" in
        start)
                iptables -N sshguard
                ip6tables -N sshguard
                iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                tail -n0 -F /var/log/auth.log | /usr/sbin/sshguard -a 2 -p 1800 -w /etc/sshguard_whitelist &
        ;;
        stop)
                killall /usr/sbin/sshguard
                iptables -D INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                ip6tables -D INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                iptables -X sshguard
                ip6tables -X sshguard
        ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        ;;
esac' > ${prefix}/etc/init.d/sshguard
chmod +x ${prefix}/etc/init.d/sshguard
for ip in `ifconfig | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`; do
for ip in `ifconfig | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`; do
         if [ ! $ip = "127.0.0.1" ]; then
         if [ ! $ip = "127.0.0.1" ]; then
Ligne 656 : Ligne 652 :
         echo $ip >> ${prefix}/etc/sshguard_whitelist
         echo $ip >> ${prefix}/etc/sshguard_whitelist
done
done
cp /etc/default/sshguard ${prefix}/etc/default/


chroot ${prefix} /sbin/insserv sshguard
#
#
#  Log our finish
#  Log our finish
Ligne 666 : Ligne 662 :


N'oubliez pas de rendre ce fichier exécutable :
N'oubliez pas de rendre ce fichier exécutable :
<pre>chmod +x /etc/xen-tools/main</pre>
<pre>chmod +x /etc/xen-tools/role.d/main</pre>


=Création de votre première VM=
=Création de votre première VM=
Ligne 684 : Ligne 680 :
Voici un autre exemple plus complet détaillant la création d'une VM ubuntu
Voici un autre exemple plus complet détaillant la création d'une VM ubuntu
<pre>
<pre>
xen-create-image --debootstrap --dir=/home/xen --size=10Gb --memory=512Mb --fs=ext3 \  
xen-create-image --size=10Gb --memory=512Mb --fs=ext3 \  
--dist=natty --hostname=vm1.domain.tld --ip=<IP> --netmask=255.255.255.0 --swap=1024Mb \
--dist=natty --hostname=vm1.domain.tld --ip=<IP> --netmask=255.255.255.0 --swap=1024Mb \
--arch=amd64 --kernel=/boot/vmlinuz-2.6.32.5-xen-amd64 --mirror=http://archive.ubuntu.com/ubuntu/ --passwd --role main
--arch=amd64 --kernel=/boot/vmlinuz-2.6.32.5-xen-amd64 --mirror=http://archive.ubuntu.com/ubuntu/ --passwd --role main
Ligne 735 : Ligne 731 :
Commencez par éditer le fichier <code>/etc/network/interfaces</code>
Commencez par éditer le fichier <code>/etc/network/interfaces</code>
<pre>
<pre>
auto dummy0
auto br1
iface dummy0 inet static
iface br1 inet static
         address 172.16.16.1
         address 192.168.10.1
         broadcast 172.16.16.255
         broadcast 192.168.10.255
         netmask 255.255.255.0
         netmask 255.255.255.0
        bridge_ports none
</pre>
</pre>


Puis activez l'interface :
Puis activez l'interface :
<pre>ifup dummy0</pre>
<pre>ifup br1</pre>


Créez ensuite le fichier <code>/etc/xen/scripts/my-network-bridge</code> contenant :
Créez ensuite le fichier <code>/etc/xen/scripts/my-network-bridge</code> contenant :
<pre>
<pre>
#!/bin/sh
#!/bin/sh
/etc/xen/scripts/network-bridge "$@" netdev=eth0
/etc/xen/scripts/network-bridge "$@" netdev=br0
/etc/xen/scripts/network-bridge "$@" netdev=dummy0
/etc/xen/scripts/network-bridge "$@" netdev=br1
</pre>
</pre>


Ligne 760 : Ligne 757 :
Ce script aura comme conséquence :
Ce script aura comme conséquence :
* créer le bridge classique de xen (celui qui était lancé par <code>(network-script network-bridge)</code>
* créer le bridge classique de xen (celui qui était lancé par <code>(network-script network-bridge)</code>
* créer le bridge dummy0 pour notre interface interne
* créer le bridge br0 pour notre interface interne


Il faut ensuite relancer xend :
Il faut ensuite relancer xend :
Ligne 771 : Ligne 768 :
Par exemple pour la vm <code>vm1.domain.tld</code> éditez le fichier <code>/etc/xen/vm1.domain.tld.cfg</code>. Modifiez la ligne <code>vif</code> de cette manière :
Par exemple pour la vm <code>vm1.domain.tld</code> éditez le fichier <code>/etc/xen/vm1.domain.tld.cfg</code>. Modifiez la ligne <code>vif</code> de cette manière :
<pre>
<pre>
vif  = [ 'ip=192.168.0.1,bridge=eth0,mac=00:16:3E:A3:F1:5A','ip=172.16.16.2,bridge=dummy0,mac=00:16:3E:A3:F1:07' ]
vif  = [ 'ip=192.168.0.1,bridge=br0,mac=00:16:3E:A3:F1:5A','ip=172.16.16.2,bridge=br1,mac=00:16:3E:A3:F1:07' ]
</pre>
</pre>


Après redémarrage, la VM aura désormais deux interfaces réseaux :
Après redémarrage, la VM aura désormais deux interfaces réseaux :
* eth0 bridgé sur l'interface eth0 du dom0 (le réseau public)
* eth0 bridgé sur l'interface br0 du dom0 (le réseau public)
* eth1 bridge sur l'interface dummy0 du dom0 (le réseau interne)
* eth1 bridge sur l'interface br1 du dom0 (le réseau interne)


Si votre VM est sous debian, il faudra ajouter la configuration de eth1 dans <code>/etc/network/interfaces</code> (sur la vm!) :
Si votre VM est sous debian, il faudra ajouter la configuration de eth1 dans <code>/etc/network/interfaces</code> (sur la vm!) :
Ligne 782 : Ligne 779 :
auto eth1
auto eth1
iface eth1 inet static
iface eth1 inet static
  address 172.16.16.2
  address 192.168.10.2
  netmask 255.255.255.0
  netmask 255.255.255.0
</pre>
</pre>


Voila, vous n'avez plus qu'à tester le débit de votre réseau interne avec <code>iperf</code>.
Voila, vous n'avez plus qu'à tester le débit de votre réseau interne avec <code>iperf</code>.
Lors de la création des VMs avec <code>xen-create-image</code> il sera pratique de préciser l'option <code>--bridge=brname</code> afin de configurer la première interface de la VM.


source: http://wiki.xen.org/xenwiki/XenNetworkingExamples
source: http://wiki.xen.org/xenwiki/XenNetworkingExamples
4 203

modifications

Menu de navigation