« Proxmox et OpenVZ » : différence entre les versions

De Linux Server Wiki
Aller à la navigation Aller à la recherche
Ligne 259 : Ligne 259 :


Pour la configuration réseau, deux choix s'offrent à vous :
Pour la configuration réseau, deux choix s'offrent à vous :
* venet : il s'agit de créer un réseau virtuel, donc avec des adresses virtuelles que vous devrez ensuite natter ou router au niveau de l'host. Cette technologie est basée sur la couche 3 du model OSI.
* venet : il s'agit de créer un réseau virtuel, donc avec des adresses virtuelles que vous devrez ensuite natter ou router au niveau de l'host. Cette technologie est basée sur la couche 3 du model OSI. Le principal intérêt de venet est qu'il suffit de sécuriser (firewall, ...) l'host et non pas chaque VE.
* veth : il s'agit de créer une interface réseau virtuelle à laquelle il faudra attribuer une adresse MAC virtuelle et une adresse IP générée dans la console de gestion de votre provider dédié.
* veth : il s'agit de créer une interface réseau virtuelle à laquelle il faudra attribuer une adresse MAC virtuelle et une adresse IP générée dans la console de gestion de votre provider dédié. Dans ce cas, il faudra faire attention à sécuriser (firewall, ...) chaque VE.


Si vous choisissez veth, veillez à bien entrer l'adresse MAC virtuelle fournit par la console de votre provider.
Si vous choisissez veth, veillez à bien entrer l'adresse MAC virtuelle fournit par la console de votre provider.

Version du 6 juin 2011 à 16:58


Partitionnement du disque dur

Pour commencer, partitionnez votre disque. Faites une partition / de 15Go, un swap, et enfin, une partition LVM2 avec l'espace restant.

Créez les systèmes de fichiers pour les partitions / et swap :

mkswap /dev/sda2
mkfs.ext3 /dev/sda1

Nous allons maintenant créer notre architecture LVM puis le système de fichier de la dernière partition.

Pour commencer, créez le volume physique :

$ pvcreate /dev/sda3
    Physical volume "/dev/sda3" successfully created

Créez ensuite le groupe pve :

$ vgcreate pve /dev/sda3
    Volume group "pve" successfully created

Vous pouvez vérifier les informations du groupe avec la commande vgdisplay:

$ vgdisplay -v pve
      Using volume group(s) on command line
      Finding volume group "pve"
    --- Volume group ---
    VG Name               pve
    System ID             
    Format                lvm2
    Metadata Areas        1
    Metadata Sequence No  1
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                0
    Open LV               0
    Max PV                0
    Cur PV                1
    Act PV                1
    VG Size               215.09 GB
    PE Size               4.00 MB
    Total PE              55064
    Alloc PE / Size       0 / 0   
    Free  PE / Size       55064 / 215.09 GB
    VG UUID               AenAEU-jdG2-RUh1-4khe-R990-MInR-cdRIe0
   
    --- Physical volumes ---
    PV Name               /dev/sda3     
    PV UUID               CsIxAk-xa18-1W2q-jm1Y-fVqg-VSnW-KMaXvx
    PV Status             allocatable
    Total PE / Free PE    55064 / 55064

Nous pouvons maintenant créer le volume logique data dans le groupe pve. Notez que la commande vgdisplay nous a permit d'identifier la dimension du volume (Total PE) que nous préciseront via l'argument -l :

$ lvcreate -l55064 -n data pve
    Logical volume "data" created

Vous pouvez vérifier les informations du volume avec la commande lvdisplay:

$ lvdisplay -v /dev/pve/data
      Using logical volume(s) on command line
    --- Logical volume ---
    LV Name                /dev/pve/data
    VG Name                pve
    LV UUID                KlFCb8-yE7K-NYCN-RNnN-LEV3-maIw-mDtZZq
    LV Write Access        read/write
    LV Status              available
    # open                 0
    LV Size                215.09 GB
    Current LE             55064
    Segments               1
    Allocation             inherit
    Read ahead sectors     auto
    - currently set to     256
    Block device           253:0

Enfin, créez le système de fichier dans votre volume logique :

mkfs.ext3 /dev/pve/data

Installation du système de base

$ mount /dev/sda1 /mnt
$ debootstrap --arch=amd64 lenny /mnt
...
I: Base system installed successfully.

Configuration de debian et installation de proxmox

Afin d'avoir accès au réseau et au matériel, montez /proc, /dev et /sys dans votre nouveau système puis chrootez y:

mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
chroot /mnt

Modifiez le fichier sysctl.conf afin de permettre le forwarding ipv4 :

net.ipv4.ip_forward=1

Mettez les paquets à jour, puis installez les locales :

aptitude update
aptitude safe-upgrade
aptitude install locales 
dpkg-reconfigure locales
aptitude install console-data
dpkg-reconfigure console-data # from arch > french > latin9)

Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :

# PVE packages provided by proxmox.com
deb ftp://download.proxmox.com/debian lenny pve

Ajoutez la clé du dépôt proxmox :

wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -
aptitude update

Pour profiter d'openVZ, installez le kernel 2.6.32* :

aptitude install pve-kernel-2.6.32-4-pve

Si vous n'aviez pas grub d'installé :

mkdir /boot/grub
grub-install /dev/sda

Créez et configurez le fichier /boot/grub/menu.lst. Il devrait ressembler à ceci :

timeout 10
default 0

title proxmox
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-4-pve root=/dev/sda1 read-only
initrd /boot/initrd.img-2.6.32-4-pve

Installez les headers du kernel (optionnel) :

aptitude install pve-headers-2.6.32-4-pve

Mettez votre serveur sur la bonne timezone :

tzselect
dpkg-reconfigure tzdata

Pensez à installer openssh puis à modifier le password root

aptitude install openssh-server
passwd

Enfin, installez ntp, lvm2 ainsi que l'interface de proxmox :

aptitude install proxmox-ve-2.6.32 ntp lvm2

Pour simplifier l'administration, créez un lien virtuel de /vz vers /var/lib/vz :

ln -s /var/lib/vz /vz

Configuration réseau de proxmox

Ajoutez les lignes suivantes dans le fichier /etc/network/interfaces :

# network interface settings
auto lo
iface lo inet loopback

iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
        address  91.121.141.220
        netmask  255.255.255.0
        gateway  91.121.141.254
        broadcast  91.121.141.255
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        network 91.121.141.0
        post-up ifconfig vmbr0 inet6 add 2001:41d0:1:bcdc::220/64
        pre-down ifconfig vmbr0 inet6 del 2001:41d0:1:bcdc::220/64

auto vmbr1
iface vmbr1 inet static
        address  192.168.0.1
        netmask  255.255.255.0
        broadcast 192.168.0.255
        bridge_ports dummy0
        bridge_stp off
        bridge_fd 0
        post-up /etc/pve/kvm-networking.sh

Utiliser son propre certificat ssl pour l'interface web

Je vous renvoi sur http://wiki.csnu.org/index.php?title=Installation_et_configuration_de_OpenSSL pour la mise en place d'une autorité de certification. Dans l'exemple suivant, je créé un certificat proxmox et le signe avec l'autorité onyx_ca :

openssl req -newkey rsa:2048 -keyout proxmox.key -out proxmox.req
openssl ca -name onyx_ca -extensions PROXMOX -in proxmox.req -out proxmox.pem
mkdir /etc/apache2/ssl/
mv proxmox.* /etc/apache2/ssl/
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/apache2/ssl/cachain.pem

Modifiez le fichier /etc/apache2/sites-enabled/pve.conf comme suit :

<VirtualHost *:443>
    SSLEngine on
    SSLProtocol all -SSLv2
    #SSLCertificateFile /etc/pve/pve-ssl.pem
    #SSLCertificateKeyFile /etc/pve/pve-ssl.key
    SSLCertificateFile /etc/apache2/ssl/proxmox.pem
    SSLCertificateKeyFile /etc/apache2/ssl/proxmox.key
    SSLCertificateChainFile /etc/apache2/ssl/cachain.pem

    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]
 </VirtualHost>

Ajouter des templates manuellement

Il suffit de télécharger directement les archives dans /var/lib/vz/template/cache/. Vous pouvez trouver des templates sur http://download.proxmox.com/appliances/ et http://wiki.openvz.org/Download/template/precreated

Créer et configurer un VE Debian 6.0

Connectez vous à votre interface proxmox. Cliquez sur Virtual Machines puis sur Create. Sélectionnez le type de VE à créer (OpenVZ dans mon cas étant donné que mon CPU ne supporte pas la technologie intel VT). Dans Templates, selectionnez la version voulue de debian. Remplissez le champ hostname, ainsi que password (ce sera le mot-de-passe root par défaut).

Pour la configuration réseau, deux choix s'offrent à vous :

  • venet : il s'agit de créer un réseau virtuel, donc avec des adresses virtuelles que vous devrez ensuite natter ou router au niveau de l'host. Cette technologie est basée sur la couche 3 du model OSI. Le principal intérêt de venet est qu'il suffit de sécuriser (firewall, ...) l'host et non pas chaque VE.
  • veth : il s'agit de créer une interface réseau virtuelle à laquelle il faudra attribuer une adresse MAC virtuelle et une adresse IP générée dans la console de gestion de votre provider dédié. Dans ce cas, il faudra faire attention à sécuriser (firewall, ...) chaque VE.

Si vous choisissez veth, veillez à bien entrer l'adresse MAC virtuelle fournit par la console de votre provider. De plus, si vous avez suivi ce wiki, selectionnez vmbr0 à la ligne brdige.

Régénérer les clés ssh

rm -f /etc/ssh/ssh_host_*
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''

Configuration réseau en veth

Configuration réseau en venet

Partager des fichiers d'un VE à un autre VE

OpenVZ, de part son architecture, permet de partager des fichiers d'un VE à un autre très facilement. Pour cela, connectez vous en ssh à votre host et utilisez la commande mount :

mount --bind /vz/private/102/directory /vz/root/101/directory

Pour que ce partage reste actif même en cas de reboot créez le fichier /etc/vz/conf/101.mount:

#!/bin/bash
source /etc/vz/vz.conf
source ${VE_CONFFILE}
mount -n --bind /vz/private/102/directory /vz/root/101/directory

N'oubliez pas de rendre ce fichier executable :

chmod +x /etc/vz/conf/101.mount