Outils pour utilisateurs

Outils du site


Panneau latéral

linux:proxmox (lu 76493 fois)

Ceci est une ancienne révision du document !


Proxmox

Doc

Définition (vieille version)

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.

Installation

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

Configuration

Cas de figure : une seule adresse ip + un LAN

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

Voir plus de détails sur Pound

Cas de figure : Une adresse ip WAN pour chaque VM

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.

Backup & restore

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.

Partager un répertoire

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

/etc/vz/conf/101.mount
#!/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.

Templates supplémentaires

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.

Proxmox 5

Plus de openVZ maintenant c’est du LXC

Our image repositories contain a list of available images, and there is a cron job run each day to download that list. You can trigger that update manually with:

pveam update

After that you can view the list of available images using:

pveam available

You can restrict this large list by specifying the section you are interested in, for example basic system images:

List available system images

# pveam available --section system
system          archlinux-base_2015-24-29-1_x86_64.tar.gz
system          centos-7-default_20160205_amd64.tar.xz
system          debian-6.0-standard_6.0-7_amd64.tar.gz
system          debian-7.0-standard_7.0-3_amd64.tar.gz
system          debian-8.0-standard_8.0-1_amd64.tar.gz
system          ubuntu-12.04-standard_12.04-1_amd64.tar.gz
system          ubuntu-14.04-standard_14.04-1_amd64.tar.gz
system          ubuntu-15.04-standard_15.04-1_amd64.tar.gz
system          ubuntu-15.10-standard_15.10-1_amd64.tar.gz

Before you can use such a template, you need to download them into one of your storages. You can simply use storage local for that purpose. For clustered installations, it is preferred to use a shared storage so that all nodes can access those images.

pveam download local debian-8.0-standard_8.0-1_amd64.tar.gz

You are now ready to create containers using that image, and you can list all downloaded images on storage local with:

# pveam list local
local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz  190.20MB

The above command shows you the full Proxmox VE volume identifiers. They include the storage name, and most other Proxmox VE commands can use them. For example you can delete that image later with:

pveam remove local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz

Proxmox 4

Bug

solution ⇒ https://www.razva.ro/fixing-apparmordenied-namerunsystemdjournaldev-log/

J’ai constaté ça dans /var/log/syslog

Mar  5 21:37:58 p2pfr kernel: [2587040.014930] audit: type=1400 audit(1488746278.820:13404): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20470 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:38:33 p2pfr kernel: [2587074.565032] audit: type=1400 audit(1488746313.371:13411): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20469 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:38:55 p2pfr kernel: [2587096.733778] audit: type=1400 audit(1488746335.538:13413): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20473 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:39:00 p2pfr kernel: [2587101.993724] audit: type=1400 audit(1488746340.798:13414): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20473 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:39:25 p2pfr kernel: [2587126.367660] audit: type=1400 audit(1488746365.173:13420): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20467 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:39:25 p2pfr kernel: [2587126.624156] audit: type=1400 audit(1488746365.429:13421): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20469 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:40:06 p2pfr kernel: [2587167.443497] audit: type=1400 audit(1488746406.248:13429): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20471 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0
Mar  5 21:40:11 p2pfr kernel: [2587172.965146] audit: type=1400 audit(1488746411.768:13431): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/named" name="/run/systemd/journal/dev-log" pid=20468 comm="named" requested_mask="w" denied_mask="w" fsuid=109 ouid=0

Après une recherche, j’ai pu comprendre que proxmox utilise un soft qui s’appelle AppArmor qui est une espèce de soft qui controle ce que d’autres soft ont le droit de lire ou écrire sur le serveur.

Si on analyse le log, on nous parle du profile /usr/sbin/named qui veut accéder à /run/systemd/journal/dev-log en écriture ( requested_mask=w )

Il faut donc chercher sur proxmox la règle du même nom ⇒ /etc/apparmor.d/usr.sbin.named et là on ne trouve aucune trace de /run/systemd/journal/dev-log

Donc pour faire les choses bien, on va ajouter notre règle dans le fichier prévu à cette effet dans /etc/apparmor.d/local/usr.sbin.named ce qui doit donner ça

# Site-specific additions and overrides for usr.sbin.named.
# For more details, please see /etc/apparmor.d/local/README.
/run/systemd/journal/dev-log rw,

Ensuite on lance la commande qui recharge seulement ça

apparmor_parser -r /etc/apparmor.d/usr.sbin.named

et voilà :)

Bug2

Après installation de debian 9 et mise à jour en debian 9.1, impossible de redémarrer la VM.

Solution ⇒ https://forum.proxmox.com/threads/lxc-start-fails-unsupported-debian-version-9-1.35860/

--- /usr/share/perl5/PVE/LXC/Setup/Debian.pm.orig    2017-07-22 08:57:59.495838723 -0700
+++ /usr/share/perl5/PVE/LXC/Setup/Debian.pm    2017-07-22 08:53:18.607049610 -0700
@@ -28,7 +28,7 @@
     $version = $1;
 
     die "unsupported debian version '$version'\n"
-    if !($version >= 4 && $version <= 9);
+    if !($version >= 4 && $version <= 9.1);
 
     my $self = { conf => $conf, rootdir => $rootdir, version => $version };

Commande

Voir ou sont monté les VM

# losetup 
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /var/lib/vz/images/101/vm-101-disk-1.raw
/dev/loop1         0      0         1  0 /var/lib/vz/images/150/vm-150-disk-1.raw
/dev/loop2         0      0         1  0 /var/lib/vz/images/201/vm-201-disk-1.raw

Ensuite vous pouvez soit les monter pour accéder aux fichiers, soit faire un fsck

fsck /dev/loop0

Un utilitaire pour gérer les containers LXC dans un terminal

USAGE: pct <COMMAND> [ARGS] [OPTIONS]
       pct clone <vmid> <newid> -experimental <boolean> [OPTIONS]
       pct create <vmid> <ostemplate> [OPTIONS]
       pct destroy <vmid>
       pct list 
       pct migrate <vmid> <target> [OPTIONS]
       pct resize <vmid> <disk> <size> [OPTIONS]
       pct restore <vmid> <ostemplate> [OPTIONS]
       pct template <vmid> -experimental <boolean> [OPTIONS]

       pct config <vmid>
       pct set <vmid> [OPTIONS]

       pct delsnapshot <vmid> <snapname> [OPTIONS]
       pct listsnapshot <vmid>
       pct rollback <vmid> <snapname>
       pct snapshot <vmid> <snapname> [OPTIONS]

       pct resume <vmid>
       pct shutdown <vmid> [OPTIONS]
       pct start <vmid> [OPTIONS]
       pct stop <vmid> [OPTIONS]
       pct suspend <vmid>

       pct console <vmid>
       pct cpusets 
       pct df <vmid>
       pct enter <vmid>
       pct exec <vmid> [<extra-args>]
       pct fsck <vmid> [OPTIONS]
       pct mount <vmid>
       pct pull <vmid> <path> <destination> [OPTIONS]
       pct push <vmid> <file> <destination> [OPTIONS]
       pct status <vmid> [OPTIONS]
       pct unlock <vmid>
       pct unmount <vmid>

       pct help [<cmd>] [OPTIONS]

exemple: lister les VM

pct list

entrer à l’intérieur d’une VM

pct enter 101

ouvrir la console d’une VM (pour sortir de la console, Ctrl+a q)

pct console 101
linux/proxmox.1562748701.txt.gz · Dernière modification: 10-07-2019 10:51 de edmc73