11887
Commentaire: c'est pas Lenny mais vzctl qui apporte ça, et le reload n'est pas utile
|
11991
|
Texte supprimé. | Texte ajouté. |
Ligne 8: | Ligne 8: |
* Faire un template | * Faire un [[/joli template]] |
Ligne 85: | Ligne 85: |
!!! En cours de réécriture en suivant les commandes standards livrées avec openvz !!! |
|
Ligne 168: | Ligne 170: |
vzctl create $name --ostemplate debian-4.0-i386-minimal | vzctl create $name --ostemplate debian-5.0-i386-minimal |
Ligne 178: | Ligne 180: |
sed -i 's/address 81.91.236.7/address '$ipadd'/g' /var/lib/vz/vz_list/$name/private/etc/network/interfaces | sed -i 's/address 81.91.236.16/address '$ipadd'/g' /var/lib/vz/vz_list/$name/private/etc/network/interfaces |
Virtualisation de serveur
Sommaire
L'arrivée du nouveau serveur m'a permis de passer avec l'aide de Stéphanie Glèlè (Stagiaire au CNF de Cotonou), à la mise en place d'OpenVZ ainsi qu'à l'automatisation de certaines tâches (le plus possible). Les avancées sont à suivre ici à la semaine près :-D.
Initialisation
- Installer openvz
Faire un /joli template
- Mettre à jour les paramêtres
Plan d'adressage
Changement d'adresses
nfs-cotonou passe de 81.91.236.4 à 81.91.236.14
OpenVZ devient 81.91.236.3
Nouvelles entrées
Service |
Ancien FQDN |
Ancien IP hôte |
Nouveau FQDN |
Nouvel IP |
Remarques ??? |
DNS |
ns.bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
ns.bj.refer.org |
81.91.236.2 |
Reste sur son serveur actuel en attendant |
Proxy squid |
cnfc.bj.refer.org |
81.91.236.4 (sur nfs-cotonou) |
proxy.bj.refer.org |
81.91.236.4 |
Openvz |
mx.bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
mail-cotonou.bj.refer.org |
81.91.236.2 |
Reste sur son serveur actuel en attendant |
|
Hébergement cnfc |
bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
web.bj.refer.org |
81.91.236.6 |
Openvz FAIT!! |
Hébergement partenaire |
*.bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
friends.bj.refer.org |
81.91.236.7 |
Openvz |
Hébergement temporaire |
temporaire.bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
temp.bj.refer.org |
81.91.236.8 |
Openvz |
Mysql |
bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
mysql.bj.refer.org |
81.91.236.9 |
Openvz FAIT!! |
Mysql friends |
bj.refer.org |
81.91.236.2 (sur mail-cotonou) |
mysql-friends.bj.refer.org |
81.91.236.10 |
Finalement, je sépare les serveurs mysql |
Voip |
voip.bj.refer.org |
81.91.236.1 (nat sur le serveur interne) |
voip.bj.refer.org |
81.91.236.11 |
Openvz |
Mirroir débian/Ubuntu |
debian/ubuntu.bj.refer.org |
81.91.236.4 (sur nfs-cotonou) |
debian/ubuntu.bj.refer.org |
81.91.236.13 |
Openvz |
Outils de monitoring |
admin.bj.refer.org |
Nouveau |
admin.bj.refer.org |
81.91.236.14 |
Openvz FAIT |
Webdav |
NA |
Nouveau |
admin.bj.refer.org |
81.91.236.15 |
Openvz FAIT |
Spécificités du CNFC
Espace disque
On a décidé de créer un volume logique pour chaque VE. Ensuite; cela permet de contrôler l'espace en plus des options internes d'OpenVZ.Donc pour ce faire on a du lvm sur du raid1 (question de redondance imédiate) sur les deux disques durs de la machine. On crée tous les lv dans le VG sys en attendant d'avoir les nouveaux disques pour séparer plus finement la configuration.
A la date du 04/02/2009 on avait :
openvz:~# vgdisplay --- Volume group --- VG Name sys System ID Format lvm2 ... Alloc PE / Size 7584 / 29,62 GB Free PE / Size 111528 / 435,66 GB
dans lequel on loge les Volumes Logiques (VL) des VEs.
Adressage Mac
On utilise une racine commune pour toutes les interfaces des VEs. Avec une base de la forme "00:E1:00:01:" et un numéro de VE de la forme XXX, cela donne : "00:E1:00:01:XX:XA" pour l'interface eth0 de la VE et "00:E1:00:01:XX:XB" pour la VETHXXX de l'hôte.
Quelques valeurs par défauts chez nous
# UBC parameters (in form of barrier:limit) KMEMSIZE="16384000:18022400" LOCKEDPAGES="4096:4096" PRIVVMPAGES="262144:292912" SHMPAGES="131072:131072" NUMPROC="400:400" PHYSPAGES="0:2147483647" VMGUARPAGES="102400:2147483647" OOMGUARPAGES="102400:2147483647" NUMTCPSOCK="500:500" NUMFLOCK="200:220" NUMPTY="64:64" NUMSIGINFO="512:512" TCPSNDBUF="5365760:10485760" TCPRCVBUF="5365760:10385760" OTHERSOCKBUF="1506232:4063232" DGRAMRCVBUF="262144:262144" NUMOTHERSOCK="500:500" DCACHESIZE="4194304:4317184" NUMFILE="8192:9312" AVNUMPROC="200:280" NUMIPTENT="128:128"
Le template
Ben, c'est un template etch Lenny standard avec installé par défaut des outils comme vim, wget, nscd, logcheck, logrotate, ssh, etc. On y ajoute le resolver par defaut à 81.91.236.2.
Script de création
!!! En cours de réécriture en suivant les commandes standards livrées avec openvz !!!
# Définition de la fonction de génération des adresses macs à partir du numéro du VE mac () { # La racine commune de l'adresse MAC est fixee mac="00:E1:00:01:" # faire un controle sur la variable name (VEID du serveur) if [ $1 -gt 100 ] then { # Formater la variable name pour l'ajouter au reste de l'adresse MAC mac0=$(echo $1 | sed 's/./&:/g'); mac0=$(echo $mac0 | sed 's/^\(.\{1\}\).\(.*\)$/\1\2/'); mac0=$(echo $mac0 | sed 's/^\(.\{4\}\).\(.*\)$/\1\2/'); # Ajouter le résultat obtenu a la racine de l'adresse MAC pour obtenir des adresses MAC completes mac1=$(echo "$mac""$mac0""A"); mac2=$(echo "$mac""$mac0""B"); } else { echo "Le nombre entre doit etre supérieur à 100"; return 0; } fi }; # recuperation des variables a utiliser dans le script echo "Entrer le numero de la machine virtuelle a creer s'il vous plait" read name echo "Entrer la taille de la machine virtuelle a creer s'il vous plait" read taille echo "Entrer le nom du groupe de volumes a utiliser s'il vous plait" read grvol echo "Entrer le nom de l'hote de la machine virtuelle a créer s'il vous plait" read hostname echo "Entrer l'adresse IP de la machine virtuelle a créer s'il vous plait" read ipadd echo "Entrer le nom du pont auquel la machine virtuelle sera ajoutée s'il vous plait" read bridge # verifier que le numéro entré est supérieur à 100 if [ $name -lt 100 ] then { echo "le numero du serveur doit être supérieur a 100"; exit 0; } fi # verifier que le volume logique a creer n'existe pas encore if [ -e /dev/mapper/$grvol-$name ] then { echo "le point de montage existe déja"; exit 0; } fi # Creation d'un volume logique echo "creation du volume logique" lvcreate --size $taille --name $name $grvol # Creation du système de fichier echo "création du système de fichier" mkfs.ext3 /dev/$grvol/$name # Ecriture des bonnes lignes dans le fstab echo "écriture des bonnes lignes dans le fstab" echo ''/dev/mapper/$grvol-$name /var/lib/vz/vz_list/$name ext3 defaults,errors=remount-ro 0 2 '' >> /etc/fstab # Creation du repertoire de montage echo "creation du repertoire de montage" mkdir /var/lib/vz/vz_list/$name # Montage des volumes logiques créés echo "montage" mount -a # Création de l'environnement virtuel vzctl create $name --ostemplate debian-5.0-i386-minimal # Specification du nom du serveur virtuel echo "Specification du nom du serveur virtuel" vzctl set $name --hostname $hostname --save # Specification de l'adresse IP du serveur virtuel echo "Specification de l'adresse IP du serveur virtuel" # Specification de la bonne addresse IP dans le fichier /etc/network/interfaces sed -i 's/address 81.91.236.16/address '$ipadd'/g' /var/lib/vz/vz_list/$name/private/etc/network/interfaces # creation de l'interface veth de la machine virtuelle # appel de la fonction de creation des adresses MACs et passage de paramètre mac $name # Attribution d'une adresse veth au VE vzctl set $name --netif_add "eth0,$mac1,veth$name.0,$mac2,$bridge" --save # demarrage de la machine virtuelle vzctl start $name
Script de suppression
demontage () { # Retrait de la ligne de montage du fichier fstab echo "Retrait de la ligne de montage du répertoire de la machine virtuelle du fichier fstab " sed -ie '/'$1'/d' /etc/fstab # suppression de tous les processus tournant sur le répertoire de montage rep=$(lsof /var/lib/vz/vz_list/$1) if [ -n "$rep" ] then { fuser -k /var/lib/vz/vz_list/$1/* } fi #démontage de la partition umount /var/lib/vz/vz_list/$1 #Suppression du répertoire de montage echo "Suppression du répertoire de montage de la machine virtuelle" rmdir /var/lib/vz/vz_list/$1 #récupération du nom du volume logique vol=$(lvdisplay | grep $1 | cut -c 26-40 ) #Suppression du volume logique echo "Suppression du volume logique de la machine virtuelle" lvremove -f $vol } ; # Récupération de la variable de suppression echo "Entrer le numero de la machine virtuelle a supprimer s'il vous plait" read name #Controle de l'existence de la VE ve=$(vzlist | grep $name) if [ -z "$ve" ] then { echo "La machine virtuelle $name n'existe pas" exit 0 } fi # Demande de confirmation echo "Etes vous sur de bien vouloir supprimer la machine virtuelle $name [oui/non]?" read conf # Confirmation positive if [ "$conf" = "oui" ] then { # Arrêt de la ve vzctl stop $name #Suppression de la machine virtuelle echo "Suppression de la machine virtuelle" vzctl destroy $name #Suppression de son fichier de configuration echo ""Suppression du fichier de configuration rm /etc/vz/conf/$name.conf.destroyed #Appel de la fonction demontage demontage $name #Message final echo "La machine virtuelle" $name "a ete complètement purgée" } #confirmation négative else { exit 0 } fi
A savoir
Depuis vzctl version 3.0.23, il est possible de nommer directement les CT (ex-VE) et de l'utiliser pour faire les appels. Il suffit de lancer la commande suivante :
vzctl set $CTID --name nom_du_CT --save
Todo list
- Faire le script de surveillance des VEs (en projet)
- Faire des fonctions dans des fichiers différents