Template Ubuntu 8.04 OpenVZ : création, configuration et quotas

Préparation de l'hôte :

On prépare sur un serveur physique un host, ou noeud, OpenVZ comme indiqué dans ce premier tuto, mais sans LVM. On ne crée pas de guest, ou VPS, à partir d'un template téléhchargé tout fait.
Le résumé des commandes à passer est donc celui-ci :

installation OpenVZ :
sudo apt-get install linux-openvz vzctl
suppression ancien kernel :
sudo apt-get remove --purge --auto-remove `dpkg -l linux-image-*server | awk '$1 ~ /ii/ {print $2}'`
modification conf :
sudo nano /etc/sysctl.conf
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1

création lien symbolique :

sudo ln -s /var/lib/vz /vz

et reboot :

sudo reboot

A partir de là, il faut soit créer un template selon les paramètres de l'IUT, soit en déployé un tout fait. Pour créer un template, il suffit de lire les paragraphes suivants.

Un template de base en permanence à jour (avec les comptes, les outils, le DNS, etc)  est maintenu sur aligot.iut.rdz.

Le template tarballé se trouve ici : /vz/template/cache/ubuntu-8.04-base.tar.gz

Le même template, déployé mais non démarré se trouve dans /vz/private/1000 . Il porte le nom openVZ "template-base" et a comme hostname "template-base" aussi. Il n'a pas d'adresse IP.

Il sert à faire immédiatement des modifications sur le template de base le cas échéant. Il suffit alors de le re-tarballer ensuite sous le nom ubuntu-8.04-base.tar.gz comme indiqué dans un paragraphe plus bas.

Création du template :

On fabrique un template hardy en suivant  ce deuxième  tutoriel.
On suit les étapes du chapître 1 du tuto, mais on nomme le container 1000.
On va au passage lui inclure la valeur du DNS. Ce qui donne les commandes suivantes :

mv hardy-chroot /vz/private/1000
vzctl set 1000 --applyconfig vps.basic --save
echo "OSTEMPLATE=ubuntu-8.04" >> /etc/vz/conf/777.conf
vzctl set 1000 --ipadd 192.168.100.100 --save
vzctl set 1000 --nameserver 192.168.100.50 --save

Puis on suit le tutoriel sur son chapître 2. Sauf qu'avant de faire le "exit" final, on va finir de customiser aux besoins de l'IUT.

Personnalisation IUT :

On remplace le sources.list minimal fabriqué par debootstrap par celui du host dans le container :

root@host:~# cp /etc/apt/sources.list /vz/private/1112/etc/apt/sources.list

On descend en tant que root dans le container à partir du noeud :

root@host:~# vzctl start 1000

root@host:~# vzctl enter 1000

Ajout des comptes et groupes administrateurs :

adduser jerome

adduser rviala

groupadd admin

usermod -aG admin jerome

echo "%admin  ALL=(ALL) ALL" >> /etc/sudoers

Configuration et paquets manquants :

locale-gen fr_FR.UTF-8

dpkg-reconfigure locales

apt-get update

apt-get upgrade

apt-get install man ssh quota sudo telnet netcat locales vim nano wget rsync build-essential

Puis on reprend, comme dans le tuto, le grand nettoyage final :

apt-get clean
cd /var/log
> messages; > auth.log; > kern.log; > bootstrap.log
> dpkg.log; > syslog; > daemon.log; > apt/term.log
rm -f *.0 *.1

On sort :

exit

Depuis l'hôte, on supprime l'adresse IP et on arrête le VPS :

vzctl set 1000 --ipdel all --save
vzctl stop 1000

Et on finalement fabrique le template :

cd /vz/private/777
tar czf /vz/template/cache/ubuntu-8.04-base.tar.gz .
Attention à ne pas oublier l'espace et le point à la fin de la ligne ci-dessus

Si on souhaite modifier/améliorer le template, on redémarre simplement le VPS 1000, on réalise les modifications (environnement, packages, etc) et on reprend le nettoyage, puis la fermeture avant de refaire un tarball. Tout simplement.


Création des fichiers de configuration des paramètres de contrôle des ressources

On va, par défaut, laisser l'ordonnanceur gérer les priorités des VPS sur notre hôte. En d'autres termes, on va donner toutes les ressources (RAM/CPU) de notre hôte à nos VPS. Pour ceci, on va fabriquer le fameux fichier de paramètres de contrôle des ressources en divisant les ressources de l'hôte par ... 1. On nomme ce profil : full.

vzsplit -n 1 -f full

Un fichier /etc/vz/conf/ve-full.conf-sample est créé. On peut vérifier qu'il est bien construit :
vzcfgvalidate /etc/vz/conf/ve-full.conf-sample

On peut, par la suite prévoir, un fichier correspondant à la moitié des ressources, puis au tiers, et au quart, juste au cas où on ait besoin en urgence de contraindre un VPS qui serait trop gourmand :

vzsplit -n 2 -f demi
vzsplit -n 3 -f tiers
vzsplit -n 4 -f quart
Ce qui produit respectivement les fichiers :

/etc/vz/conf/ve-demi.conf-sample
/etc/vz/conf/ve-tiers.conf-sample
/etc/vz/conf/ve-quart.conf-sample

Création d'un VPS à partir du template IUT

Comme OpenVZ réserve les 100 premiers nombres pour lui, on choisira des identifiants de VPS supérieur à 1000 par convention. Ex : identifiant = IP+1000 (où IP est le dernier octet IPv4).

La valeur du DNS étant intégrée dans le template, on n'a pas besoin de l'affecter dans le VPZ par les commandes vzctl.

On crée donc un VPS sur une configuration de ressource "full" (remplacer "full" par "demi", "tiers" ou "quart" selon le besoin) comme ceci :

 vzctl create 1010 --ostemplate ubuntu-8.04-base --config full
vzctl set 1010 --name nomduVPS --save
vzctl set nomduVPS --ipadd 192.168.100.10 --save
vzctl set nomduVPS --hostname toto.iut-rodez.fr --save
vzctl set nomduVPS --nameserver 192.168.100.50 --save (le cas échéant)

Si on souhaite que le VPS redémarre automatiquement au reboot de l'hôte, il faut le préciser dans le fichier de conf :

echo ONBOOT="yes" >> /etc/vz/conf/1010.conf

Mise en place des quotas de disques

(réf : documentation OpenVZ, en pièce jointe, p.104)
On utilise la commande vzquota init qui se compose comme ceci :

vzquota init VPSid -b bsl -B bhl -e bet -i isl -I ihl -n iet -p path

où :
VPSid : id du VPS, 1010 dans notre exemple.
bsl : block soft limit, limite en Ko pouvant être dépassée pendant la durée bet.
bhl : block hard limit, limite en Ko indépassable.
bet : block expire time, temps de dépassement autorisé de la block soft limit.
isl : inode soft limit, limite en nombre d'inodes pouvant être dépassée pendant la durée iet.
ihl : inode hard limit, limite en nombre d'inodes indépassable.
iet : inode expire time, temps de dépassement autorisé de la inode soft limit.
path : chemin du VPS, par défaut dans notre exemple /vz/private/1010

Dans notre cas :

Si on veut donner par exemple deux Gigas de disques à un VPS :
2 x 1024 x1024 = 2097152

On va placer les soft et hard limits de block à la même valeur, l'expire time n'aura alors aucune pertinence (autant mettre 0).
De même pour les inodes, on va donner une soft limit égale à la hard et a une valeur très élevée. On peut prendre une valeur proche de celle d'hôte qu'on lit en tapant dans celui-ci :
stat -f /
On trouve par exemple un nombre d'inodes supérieur à 8 millions. On choisira donc 8000000 pour la limite.

Normalement, un VPS créé à partir d'un template, surtout s'il a été démarré une fois, a déjà un quota associé par défaut. On désactive donc le quota et on le supprime :
vzquota off 1010 -f
vzquota drop 1010 -f

Puis on initialise un nouveau profil de quota avec vzquota init.
Ce qui donne la commande suivante pour un VPS avec 2 Go de disque :

vzquota init 1010 -b 2097152 -B 2097152 -e 0 -i 8000000 -I 8000000 -n 0 -p /vz/private/1010

On l'active et on vérifie :
vzquota on 1010
vzquota stat 1010

Démarrage du VPS déployé à partir du template

Seulement après ces paramétrages, on démarre le VPS qui est immédiatement accessible par ssh (aux limites des ACL près) :
vzctl start 1010


Sauvegarde ou clonage d'un VPS

réf : http://wiki.openvz.org/Vzdump

Pour ceci, on a besoin de l'utilitaire vzdump qui n'est malheureusement pas inclus dans les packages de la distribution (chez Red Hat non plus d'ailleurs).
On le télécharge sur le site officiel :
wget http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump_1.1-2_all.deb
Et on l'installe (attention le paquet a deux dépendances à satisfaire au préalable :
apt-get install cstream ssmtp
dpkg -i vzdump_1.1-2_all.deb
Pour sauver via rsync sans stopper le VPS (cela va juste le suspendre quelques secondes au pire) :

vzdump --suspend VPSid
Par défaut, le dump est stocké dans /vz/dump/
Ċ
Jérôme Bousquié,
5 mars 2010 à 22:36
Comments