Ceci est une ancienne révision du document !
Proxmox est une distribution linux sous debian lenny qui intègre les outils openvz ( http://wiki.openvz.org/Main_Page ) permettant la virtualisation de machine.
L’intérêt de proxmox est qu’ils ont développés une interface web permettant de gérer facilement les outils openvz.
Ici l’install se fait via OVH sur un kimsufi 2g
On va sur la page http://pve.proxmox.com/wiki/Get_Virtual_Appliances pour trouver nos OS qu’on veut installer en VM
Ensuite, dans notre cas nous voulons installer une debian 6.0 64bit
cd /vz/template/cache/ wget http://download.proxmox.com/appliances/system/debian-6.0-standard_6.0-4_amd64.tar.gz
On rajouter pour l’instant une petite règle de firewall
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o vmbr0 -j SNAT --to 70.70.70.70
Cela permet à votre réseau virtuel en 192.168.0.0 d’avoir accès à internet via votre serveur 70.70.70.70
Pour un accès ssh de votre VM, vous devez utiliser un autre port que le 22 qui est déja utilisé par votre serveur principal.
Exemple pour le port 2222 qui sera redirigé sur le port 22 de votre VM 192.168.0.1
On déclare tout d’abord une règle permettant de faire du NAT sur notre réseau local virtuelle 192.168.0.0/24
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o vmbr0 -j SNAT --to-source 70.70.70.70
Ensuite on redirige le port 2222
iptables -t nat -A PREROUTING -d 70.70.70.70 -p tcp --dport 2222 -j DNAT --to-dest 192.168.0.1:22
(a venir, une config plus sécurisé du firewall…)
Je désactive l’ecoute sur le port 80 du serveur principal pour laisser libre ce port pour les autres machines.
L’interface reste toujours accessible sur le port 443 via https://...
Pour cela, modifiez le fichier /etc/apache2/ports.conf et commentez la ligne Listen 80
Rédémarrez apache
Installons maintenant pound qui permet le reverse-proxy et load-balancer
aptitude install pound
Dans ce cas la, pas besoin de faire du nat, on a une sorte de pont entre le wan et les vm. On ne peut pas faire d’iptables directement dans les VM, je n’ai pas trouvé l’astuce… Donc tout se faire sur le serveur proxmox.
L’insterface vmbr0 correspond à l’interface de proxmox, ensuite, tout ce qui est forwardé sur cette interface fini sur les VM.
Brièvement, pour couper le port 80 sur la machine proxmox mais sans couper le port 80 de vos VM
iptables -A INPUT -i vmbr0 -p tcp --dport 80 -j DROP
A l’inverse, couper le port 80 de toutes vos VM sans couper celui de proxmox
iptables -A FORWARD -i vmbr0 -p tcp --dport 80 -j DROP
Pour couper le port 80 d’une seule VM, procurez-vous son adresse ip et ajoutez-la dans la règle
iptables -A FORWARD -i vmbr0 -p tcp -d 199.199.199.199 --dport 80 -j DROP
Garder à l’esprit que vos VM peuvent communiquer entre elle, je mettrai prochainement une règle permettant de les isoler entre elles.
La commande suivante permet un backup de base
[root@serveur:]# vzdump --compress 102 INFO: starting new backup job: vzdump --compress 102 INFO: Starting Backup of VM 102 (openvz) INFO: CTID 102 exist unmounted down INFO: status = CTID 102 exist unmounted down INFO: backup mode: stop INFO: ionice priority: 7 INFO: creating archive '/var/lib/vz/dump/vzdump-openvz-102-2012_01_22-23_33_14.tgz' INFO: Total bytes written: 457912320 (437MiB, 4.3MiB/s) INFO: archive file size: 188MB INFO: Finished Backup of VM 102 (00:01:46) INFO: Backup job finished successfuly
Le contenu de l’archive comprend toute l’arborescence du serveur virtuel ce qui est pratique pour récupérer toutes les données que l’on souhaite sans avoir les outils openvz sous la main.
La commande suivante permet la restautarion d’un backup de ma machine 101 sur une nouvelle machine nommé 103
[root@serveur:/vz/vzdump]# vzrestore vzdump-openvz-101-2012_01_29-00_00_02.tgz 103 INFO: restore openvz backup 'vzdump-openvz-101-2012_01_29-00_00_02.tgz' using ID 103 INFO: extracting archive 'vzdump-openvz-101-2012_01_29-00_00_02.tgz' INFO: Total bytes read: 583393280 (557MiB, 21MiB/s) INFO: extracting configuration to '/etc/vz/conf/103.conf' INFO: restore openvz backup 'vzdump-openvz-101-2012_01_29-00_00_02.tgz' successful
Avec proxmox vous n’avez pas besoin d’utiliser ces lignes de commandes pour faire un backup, tout est prévu dans l’interface web.
Il suffit de déclarer un espace de stockage pour les backups, ensuite on crée une tache de backup en spécifiant la période, combien de backup on garde et quelle machine on veut sauvegarder.
Rien n’est prévu toutefois pour faire une restauration… il faudra passer par la ligne de commande.
Une fois la commande de restauration effectué, vous retrouverez la machine dans votre interface web.
Admettons vous voulez un répertoire dans votre VM qui contient plein de données mais vous ne souhaitez pas que ces données soient inclus dans le backup de votre VM.
La solution est de créer un répertoire qui sera partagé par le système proxmox dans votre VM.
Pour cela on va utiliser un montage bind directement sur la machine proxmox.
Admettons que votre VM est le numéro 101, tapez cette commande sur la machine proxmox.
mount --bind /var/lib/vz/stockage /var/lib/vz/root/101/mnt/stockage
Maintenant tout ce que vous stockerez sur votre VM dans le répertoire /mnt/stockage ne sera pas considérer comme des données de votre VM et ne sera donc pas sauvegardé par votre backup.
Pour que ce montage se fasse automatiquement, vous devez créer le fichier suivant
#!/bin/bash source /etc/vz/vz.conf source ${VE_CONFFILE} mount --bind /vz/stockage ${VE_ROOT}/mnt/stockage
Assurez-vous qu’il soit exécutable, chez moi il s’est mis automatiquement exécutable.
Par défaut on trouve pas mal de templates disponibles sur proxmox mais par exemple, il n’y a que la version 32bits de Debian.
On peut trouver une version 64bits et d’autres distrib ici ⇒ http://wiki.openvz.org/Download/template/precreated
Il n’y a plus qu’a les télécharger dans le répertoire template prévu par proxmox.