proxmox – virtualiser ses serveurs en GPL

Proxmox (actuellement version 5.2) est un hyperviseur type 1 open source (le support est payant) de virtualisation basé sur la distribution linux Debian. Il utilise la technologie KVM pour de la virtualisation complète et les containeurs LXC en para-virtualisation. Il permet comme virtualbox de créer des snapshots de machine, des sauvegardes complètes et beaucoup d’autres fonctionnalités.

proxmox-logo

Au travers cet article, vous verrez comment mettre en place cette solution de virtualisation sur de nouveaux serveurs et/ou serveurs existants.

Plan de la formation

Présentation

Proxmox Virtual Environment (PVE) est une solution de virtualisation libre (un hyperviseur), de type bare-metal, basée sur Debian GNU/Linux, les machines virtuelles Linux KVM et les conteneurs Linux LXC. Le code source est publié sous licence GNU Affero GPL v3.

Proxmox VE permet de monter aussi bien un serveur unique de virtualisation qu’un cluster complet constitué de plusieurs serveurs physiques permettant de gérer la répartition de charge ainsi que la haute disponibilité (HA – High Availability).

Proxmox VE est un concurrent direct à VMWare vSphere, Microsoft Hyper-V ou Citrix XenServer. Sa force est d’être intégralement open-source et administrable à partir d’une interface web unique sans avoir besoin d’installer de client spécifique sur les machines des administrateurs. La puissance et la souplesse de cette solution de virtualisatio permette également de déléguer la gestion des VM à des tiers à travers une base de login locale ou externe.

L’installation peut se faire avec les paquets du dépôt debian proxmox ou depuis l’iso officiel de disponible à cette adresse : https://www.proxmox.com/en/downloads/category/iso-images-pve

Pour résumer l’ensemble des fonctionnalités de Proxmox VE :

  • Système bare-metal basé sur Debian Stretch
  • Administration complète à l’aide d’une interface Web
  • Support de Linux KVM et Linux LXC
  • Mode clustering avec haute disponibilité
  • Console VNC intégrée en HTML5
  • Support de stockages locaux (ext4, ZFS, LVM, LVM-thin, Cloud-Init)
  • Support de stockages distants et/ou partagés (NFS, CIFS, iSCSI, GlusterFS, DRBD)
  • Snapshots live des machines virtuelles
  • Migration à chaud des machines virtuelles
  • Fonctionnalités de sauvegarde des machines virtuelles
  • Gestion des permissions (utilisateurs, groupes, pools)
  • Support de LDAP et Active Directory
  • Support réseau avancé (Bonding, VLAN, …)
  • Firewall intégré

Les fonctionnalités étant très nombreuses, il est impossible de toutes les énumérer ici mais pour résumer, virtualiser un serveur offre plusieurs avantages:

  • Bénéficier de plusieurs serveurs sur un même machine physique. On rentabilise les capacités physiques de son serveur.
  • Assurer les sauvegardes/restauration complètes ou partielles de machines. On s’assure de revenir en arrière en cas de problème, ou déplacer une machine virtuelle d’un serveur physique vers un autre.

La documentation est disponible à cette adresse : https://pve.proxmox.com/pve-docs/

Installation de base du serveur

Pour l’installation présentée ici, nous utiliserons deux disques durs (sda et sdb de 40 Go) et un disque ssd pour le cache (sdc de 128Go).

Installation de l’hyperviseur Proxmox

Pour profiter pleinement des fonctionnalités de Proxmox, l’utilisation de ZFS est fortement conseillée. Proxmox le propose dès l’installation. ZFS est un système de fichiers qui remplace le raid, lvm et ext4. Il s’agit d’une solution logicielle qui offre de la performance et une sécurité maximale en accédant directement aux disques. Toute forme de RAID matériel est donc à proscrire. Plusieurs cas de figure sont possibles :

  • pas de carte raid : les disques sont connectés directement sur les ports SATA de de la carte mère. Inconvénient, ceux-si sont rarement connectables à chaud, et souvent limités à moins de 6. Souvent les perfs sont relativement limitées surtout sur du matériel un peu ancien.
  • carte raid SATA/SAS basse/moyenne gamme : il faut configurer la carte dans le bios pour qu’elle soit en mode JBOD, HBA ou accès direct au disques. La désignation dépend de la marque. Pour certaines cartes LSI, il est possible de flasher un firmware spécial afin d’obtenir de meilleurs performances.
  • cartes raid avec batteries (BBU) : même remarque que ci-dessus, sauf que certaines cartes ne permettent pas du tout l’accès direct. Elles sont donc inutilisables. C’est notamment le cas chez DELL.
  • cartes d’extension HBA SAS/SATA : pas de problème, c’est fait spécialement pour…

Si le chassis du serveur le permet, rien n’interdit de répartir les disques sur plusieurs contrôleurs, les performances n’en seront que meilleures. On peut aussi utiliser une baie de stockage externe de type SAN / NAS hybrid.

Mire après boot sur ISO

install-proxmox0

Valider les conditions générales

install-proxmox1

Paramétrage des disques en ZFS

install-proxmox2
install-proxmox3
install-proxmox4

Remarque : Le RAID-Z0 est similaire au RAID 0 donc sans redondance. Le RAID-Z1 est similaire au RAID 5, on peut perdre une seul disque. Le RAID-Z2 est similaire au RAID 6, il est possible de perdre 2 disques. Le RAID-Z3 serait un RAID 7 ou il est possible de perdre 3 disques.
Je vous invite à utiliser le calculateur en ligne https://wintelguy.com/zfs-calc.pl pour toute utilisation de ZFS.

On choisit la langue, ainsi que la ville et le type de clavier.

install-proxmox5

Renseigner le mot de passe root

install-proxmox7

Remarque : Depuis une interface idrac il peut y avoir des problèmes de caractères. Penser à saisir une adresse mail valide pour que le serveur puisse vous envoyer des alertes.

Paramétrage basique du réseau

install-proxmox6

Attendre la fin d’installation

install-proxmox8

Reboot de l’hyperviseur

install-proxmox9

Le serveur redémarre, et indique comment accéder à l’interface de gestion. On peut accéder évidemment au serveur en ssh (connexion directe par le compte root possible).

Paramétrer le réseau interne NAT et les redirections de port entre l’hôte et les VMs

2018-11-08 08.30.23
2018-11-08 08.30.30

Post-install – configuration du service d’alerte par mail

L’hyperviseur doit pouvoir envoyer des alertes par mail, pour cela nous installons un MTA de type postfix :

# apt update && apt install postfix apticron

Paramétrage de postfix en mode IPV4 :

# postconf -e "relayhost=monrelay.formation.fr"
# postconf -e "myhostname=prox1.formation.fr"
# postconf -e "inet_protocols = ipv4"
# postfix reload

Paramétrage d’un email pour le logiciel d’alerte de paquet à mettre jour (apticron) :

# sed -i 's/root/'"votreemail@formation.fr"'/g' /etc/apticron/apticron.conf

Vérifier la bonne reception du mail en executant la commande :

# apticron

Post-install – configuration des repository sources

Il est possible de récupérer les mises à jour de Proxmox sans payer un support en utilisant le dépôt non-entreprise. Pour cela ajouter la branche de chez Proxmox VE :

# echo "deb http://download.proxmox.com/debian stretch pve-no-subscription" >> /etc/apt/sources.list

Vous pouvez profiter en même temps ajouter les sources no-free (java, unrar…)

# sed -i "s/main/main\ non-free/g" /etc/apt/sources.list

Remarque: Les mises à jour ne sont pas sures à 100% pour une production. Avez d’effectuer les MAJ assurez-vous d’attendre un délais de 1 mois ou de tester celle-ci sur des machines de test.

Post-install – ajouter du cache à votre pool ZFS

ZFS peut offrir du cache en écriture (log) et en lecture (cache). Pour cela, un petit SSD de 128Go est suffisant. Ajouter celui-ci à votre configuration de virtualbox via un 3ème disques sata.

Avec ZFS on parle de datasets, présents dans des zpools (sur proxmox il se nomme rpool)-, composés de plusieurs vdev représentant eux-même les disques physiques (ici sda, sdb et sdc).

schema-zfs

# zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda2    ONLINE       0     0     0
        sdb2    ONLINE       0     0     0

errors: No known data errors
# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
rpool  39.8G  1.28G  38.5G         -     2%     3%  1.00x  ONLINE  -

On voit que le pool de stockage s’appelle rpool . Pour ajouter le ssd /dev/sdc :

# zpool add -f rpool cache /dev/sdc

Normalement, la commande zpool status doit donner ceci

# zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda2    ONLINE       0     0     0
        sdb2    ONLINE       0     0     0
    cache
      sdc       ONLINE       0     0     0

errors: No known data errors

Liste les datasets

# zfs list

Post-install – Tunning

apt install -y pigz htop iptraf iotop iftop ncdu ethtool apticron

Ajout d’un serveur ntp de strate supérieur :

sed -i '/^#NTP/ s/#NTP=.*/NTP='"ntp.laas.fr"'/g' /etc/systemd/timesyncd.conf
apt -y purge ntp libopts25
systemctl restart systemd-timesyncd
timedatectl set-ntp true

Remplacement de GZIP par PIGZ avec attribution du nombre de thread par CPU

touch /bin/pigzwrapper
echo '#!/bin/sh' > /bin/pigzwrapper
echo "PATH=${GZIP_BINDIR-'/bin'}:$PATH" >> /bin/pigzwrapper
echo 'GZIP="-1"' >> /bin/pigzwrapper
cpu=$(echo "$(grep -c "processor" /proc/cpuinfo) / $(grep "physical id" /proc/cpuinfo |sort -u |wc -l)" | bc)
echo 'exec /usr/bin/pigz -p cpu  "$@"'  >> /bin/pigzwrapper
sed -i 's/cpu/'"$cpu"'/g' /bin/pigzwrapper
chmod +x /bin/pigzwrapper
mv /bin/gzip /bin/gzip.original
cp /bin/pigzwrapper /bin/gzip

Interface web de gestion

Accès à l’interface

Proxmox VE est simple. Il n’est pas nécessaire d’installer un outil de gestion séparé, et tout peut être fait via votre navigateur web (Firefox ou Google Chrome est recommandé). Une console HTML5 intégrée permet d’accéder à la console invité. Comme alternative, SPICE peut être utilisé.

Grâce au système de fichiers Proxmox cluster (pmxcfs), vous pouvez vous connecter depuis n’importe quel nœud pour gérer l’ensemble du cluster. Chaque nœud peut gérer l’ensemble du cluster. Il n’est pas nécessaire d’avoir un nœud de gestion dédié. Si vous vous connectez à partir d’un appareil mobile, vous êtes redirigé vers une interface utilisateur tactile plus simple.

L’interface web est accessible via https://votrehyperviseur:8006 (le login par défaut est : root, et le mot de passe est spécifié lors de l’installation).

Par la suite, il est possible de créer des comptes utilisateurs Proxmox pour permettre à d’autres personnes de démarrer/éteindre/gérer des vms.

pve-login-w400

Remarque: Après la saisie de votre identifiant, un avertissement vous indique que le serveur n’est pas enregistré pour bénéficier du support. Il est possible de le désactiver depuis la console : sed -i.back '/Proxmox.Utils.checked_command(function() {});/ s/^/\/\//' /usr/share/pve-manager/js/pvemanagerlib.js

Présentation de l’interface

Depuis l’interface, vous pouvez accéder à 4 types de vue; server view, folder view, storage view, pool view.

Ensuite l’onglet datacenter, qui pourra contenir plusieurs hyperviseurs Proxmox (nœuds ou clusters).

Datacenter rôles
résumé permet de voir l’état général du cluster.
cluster créer ou rejoindre un cluster
options permet de changer les réglages claviers, proxy, adresse mail, console, préfix @MAC
stockage permet d’ajouter des espaces de stockage (répertoire locaux,partage ntfs,iscsi…)avec le type de données contenues (iso,vms,sauvegardes…).
sauvegarde permet de programmer des sauvegardes des VMs.
replication créer ou visualiser les replications actives des VMs pour le cluster
permissions gérer et créer des comptes utilisateurs, groupes utilisateurs
ha gestion de la haute disponibilité

Enfin, le premier hyperviseur de VMs.

nœud PROX1 rôles
résumé permet de voir les stats d’utilisation du serveur(CPU,RAM…).
shell permet d’ouvrir un terminal sur le serveur (plus besoin de putty ou autre connecteur ssh).
système permet d’ajuster les paramètres du nœuds.
MAJ effectuer les mises à jour serveur.
disques Permet de voir l’état des disques durs (smartvalues)

Création des bridges sur le PROX1 et le PRX2

Afin de préparer la création du cluster Proxmox VE, nous allons créer sur chaque hôtes d’une interface dédié à la communication. C’est équivalent au réseau VMKernel sous Vmware.

Sur l’hyperviseur PROX1
install-proxmox13

Sur l’hyperviseur PROX2
install-proxmox14

Création d’un cluster Proxmox

Le gestionnaire de cluster Proxmox VE pvecm est un outil permettant de créer un groupe de serveurs physiques. Un tel groupe s’appelle une grappe. Le moteur du cluster est corosync et il peut comprendre jusqu’à 32 nœuds physiques (probablement plus, selon la latence du réseau).

pvecm peut être utilisé pour créer un nouveau cluster, joindre des nœuds à un cluster, quitter le cluster, obtenir des informations d’état et effectuer diverses autres tâches liées au cluster. Le système de fichiers Proxmox Cluster File System (pmxcfs) est utilisé pour distribuer de manière transparente la configuration du cluster à tous les nœuds du cluster.

Le regroupement des nœuds dans un cluster Proxmox présente les avantages suivants :
– gestion centralisée et basée sur le Web
– clusters multi-maîtres : chaque nœud peut effectuer toutes les tâches de gestion
– pmxcfs : système de fichiers piloté par une base de données pour stocker les fichiers de configuration, répliqués en temps réel sur tous les nœuds en utilisant corosync.
– migration facile des machines virtuelles et des conteneurs entre les hôtes physiques
– déploiement rapide
– pare-feu et HA


Avant de créer le cluster, vérifier/compléter le fichier /etc/hosts :

sur PROX1

127.0.0.1 localhost.localdomain localhost
10.0.2.5 prox1.formation.fr prox1 pvelocalhost
192.168.1.1 cluster-prox1
192.168.1.2 cluster-prox2

sur PROX2

127.0.0.1 localhost.localdomain localhost
10.0.2.6 prox2.formation.fr prox2 pvelocalhost
192.168.1.1 cluster-prox1
192.168.1.2 cluster-prox2

Depuis PROX1 executer la commande suivante

root@prox1:~# pvecm create clus-formation -bindnet0_addr 192.168.1.0 -ring0_addr cluster-prox1
Corosync Cluster Engine Authentication key generator.
Gathering 1024 bits for key from /dev/urandom.
Writing corosync key to /etc/corosync/authkey.
Writing corosync config to /etc/pve/corosync.conf
Restart corosync and cluster filesystem

Depuis PROX2, rejoindre le cluster nommé clus-formation précédemment créé. Le mot de passe vous sera demandez :

root@prox2:~# pvecm add cluster-prox1 -ring0_addr cluster-prox2
Please enter superuser (root) password for 'cluster-prox1':
Password for root@cluster-prox1: ********
Establishing API connection with host 'cluster-prox1'
The authenticity of host 'cluster-prox1' can't be established.
X509 SHA256 key fingerprint is 31:23:C1:AE:FB:92:9D:85:34:40:91:2B:EA:DA:B3:4F:88:62:9E:95:8A:8E:76:5B:8A:C4:96:18:AC:6D:66:25.
Are you sure you want to continue connecting (yes/no)? yes
Login succeeded.
Request addition of this node
Join request OK, finishing setup locally
stopping pve-cluster service
backup old database to '/var/lib/pve-cluster/backup/config-1540472542.sql.gz'
waiting for quorum...OK
(re)generate node files
generate new node certificate
merge authorized SSH keys and known hosts
generated new node certificate, restart pveproxy and pvedaemon services
successfully added node 'prox2' to cluster.

Vérifier sur les deux nœuds la bonne création du cluster :

root@prox1:~# pvecm status
Quorum information
------------------
Date:             Thu Oct 25 15:06:22 2018
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          0x00000001
Ring ID:          1/8
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.1.1 (local)
0x00000002          1 192.168.1.2

Depuis n’importe laquelle des interfaces web vous avez accès aux nœuds

install-proxmox15

Créer un compte utilisateur

Par défaut, seul le compte root local du serveur possède un accès à l’interface de gestion Proxmox. Il est recommandé de créer un ou plusieurs comptes pour administrer les machines virtuelles. Depuis la partie Datacenter>Permissions>Users puis cliquer sur Add et renseigner les informations demandées.

add-use-w400

L’utilisateur est ainsi créé mais ne dispose d’aucuns privilèges sur les VMs. Vous devez lui ajouter des permissions. Il faudra procéder de la même façon pour les groupes et y affecter des utilisateurs.

Depuis Datacenter>PROX1>ID-VM>Permissions, cliquer sur add, choisir l’utilisateur créé précédemment et de lui attribuer un rôle.

user-on-vm1000

Remarque: La liste complète des rôles avec les droits associés est accessible dans Datacenter>Permissions>roles

Authentification externe

Il est possible de connecter l’hyperviseur à un annuaire externe de type AD ou LDAP. Cela permettra à un utilisateur de gérer une vm particulière ou un groupe de VM.

DepuisDatacenter>Authentification puis l’onglet Add>TypeAnuaire.

auth-externe

Renseigner les informations nécessaires comme l’exemple suivant.

auth-externe2

Création d’une machine virtuelle (VM)

En pré-requis pour LXC, vous devez récupérer un templates de Debian9 depuis le dépot Promox via la commande pveam (Proxmox VE Appliance Manager) afin de le stocker dans réportoire local de prox1:

Mise à jour et affichage de la liste des templates disponibles

root@prox1:~# pveam update
root@prox1:~# pveam available
...
system          alpine-3.8-default_20180913_amd64.tar.xz
system          archlinux-base_20180906-1_amd64.tar.gz
system          centos-6-default_20161207_amd64.tar.xz
system          centos-7-default_20171212_amd64.tar.xz
system          debian-8.0-standard_8.7-1_amd64.tar.gz
system          debian-9.0-standard_9.5-1_amd64.tar.gz
...

Télécharger et stocker le template Debian9 sur le disque local de prox1

pveam download local debian-9.0-standard_9.5-1_amd64.tar.gz
starting template download from: http://download.proxmox.com/images/system/debian-9.0-standard_9.5-1_amd64.tar.gz
target file: /var/lib/vz/template/cache/debian-9.0-standard_9.5-1_amd64.tar.gz
2018-11-14 13:22:53 (13.2 MB/s) - '/var/lib/vz/template/cache/debian-9.0-standard_9.5-1_amd64.tar.gz.tmp.10932' saved [203167600/203167600]
download finished

General

Les VM sont repérées par un numéro unique (ici 1000). On donnera le vrai hostname de votre DNS. Le pool peut-être renseigné en cas de délégation de management. Saisir le mot de passe et un clé ssh d’administration.

install-proxmox17

ATTENTION: Si vous possèdez plusieurs hyperviseur Proxmox indépendants, penser à bien donner une ID cohérent avec le serveur. Par exemple (1000;1001;… pour PROX1 et 2000;2001;… pour PROX2, etc.). En effet, si vous placez vos sauvegardes complètes de VM sur un partage réseau (cifs,nfs,..), vous aurez un conflit d’ID.

Template

Choisir le template de Debian9 précédemment téléchargé :

install-proxmox18

Root disk

Définir la taille de la VM et le storage :

install-proxmox19

CPU & MEM

Définir le nombre de CPU et la taille mémoire

install-proxmox20

Network

Définir les interfaces réseaux

install-proxmox21

Valider et attendre la création de la VM

install-proxmox22
install-proxmox23

Post-Install – Graylog

root@graylog:/# more /etc/apt/sources.list
deb http://ftp.debian.org/debian stretch main contrib
deb http://ftp.debian.org/debian stretch-updates main contrib
deb http://security.debian.org stretch/updates main contrib
deb http://ftp.debian.org/debian stretch-backports main
root@graylog:/# more /etc/apt/apt.conf.d/10no-check-valid-until
APT::Install-Recommends "false";
APT::Install-Suggests "false";

Installation des pré-requis pour Graylog

root@graylog:/# apt-get install openjdk-8-jre-headless apt-transport-https uuid-runtime pwgen curl net-tools lwatch

Installation d’Elasticsearch

root@graylog:/# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.12.deb

Activation du service Elasticsearch

root@graylog:~# systemctl enable elasticsearch
root@graylog:~# systemctl start elasticsearch

Vérification de l’état du service Elasticsearch

root@graylog:~# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: en
   Active: active (running) since Fri 2018-10-26 05:44:30 UTC; 7s ago
     Docs: http://www.elastic.co
  Process: 4746 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (co
 Main PID: 4747 (java)
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/elasticsearch.service
           └─4747 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccup

Oct 26 05:44:30 graylog systemd[1]: Starting Elasticsearch...
Oct 26 05:44:30 graylog systemd[1]: Started Elasticsearch.

Via curl, vérifier la bonne écoute du module web

root@graylog:~# curl http://localhost:9200
{
  "name" : "Z3pHSR4",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "iPIRw3T5SaCCDjjGFocc2w",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Récupération et installation du paquet Graylog

root@graylog:~# apt-get install apt-transport-https
root@graylog:~# wget https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.deb
root@graylog:~# dpkg -i graylog-2.4-repository_latest.deb
root@graylog:~# apt-get update
root@graylog:~# apt-get install graylog-server

Activation du service Graylog

root@graylog:~# systemctl enable graylog-server.service
root@graylog:~# systemctl start graylog-server.service

Génération du mot de passe pour Graylog

root@graylog:~# echo -n P@$$w0rd | sha256sum
f789d04c14867255b7950d3f0d358e1eff642af97eb5045f1dbe9602dc49480e  -

Synchronisation ZFS d’une VM

L’outil en ligne de commande pvesr gère le framework de réplication de stockage Proxmox VE. La réplication du stockage apporte une redondance pour les VMs qui utilisent le stockage local et réduit le temps de migration.

Il réplique les volumes des VMs vers un autre nœud afin que toutes les données soient disponibles sans utiliser de stockage partagé. La réplication utilise des snapshots pour minimiser le trafic envoyé sur le réseau. Par conséquent, les nouvelles données ne sont envoyées qu’incrémentalement après une synchronisation initiale complète. En cas de défaillance d’un nœud, les données de vos invités sont toujours disponibles sur le nœud répliqué.

La réplication se fera automatiquement à des intervalles configurables. L’intervalle de réplication minimal est d’une minute et l’intervalle maximal est d’une fois par semaine.
Chaque VMs peut être répliqué sur plusieurs nœuds cibles, mais une VMs ne peut pas être répliqué deux fois sur le même nœud cible. La bande passante utiliser pour la réplication peut être limitée pour éviter de surcharger un stockage ou un serveur.

Par exemple, la VM 100O est actuellement sur PROX1 et est répliqué sur PROX2. Vous la migrez vers PROX2, la réplication est automatiquement active de PROX2 vers PROX1.

root@prox1:~# pvesr

USAGE: pvesr <COMMAND> [ARGS] [OPTIONS]
       pvesr schedule-now <id>
       pvesr status  [OPTIONS]
       pvesr create-local-job <id> <target> [OPTIONS]
       pvesr delete <id> [OPTIONS]
       pvesr list
       pvesr read <id>
       pvesr update <id> [OPTIONS]
       pvesr disable <id>
       pvesr enable <id>
       pvesr finalize-local-job <id> [<extra-args>] [OPTIONS]
       pvesr prepare-local-job <id> [<extra-args>] [OPTIONS]
       pvesr run  [OPTIONS]
       pvesr set-state <vmid> <state>
       pvesr help [<extra-args>] [OPTIONS]

Création de la réplication pour la VM 1000 de PROX1 vers PROX2

root@prox1:~# pvesr create-local-job 1000-0 prox2

Suppression de la réplication pour la VM 1000

root@prox1:~# pvesr delete 1000-0
Replication job removal is a background task and will take some time.

Migration d’une VM entre nœuds

Migration de la VM 1000 vers le nœud prox2

root@prox1:~# pct migrate 1000 prox2 --restart
2018-10-25 15:29:00 shutdown CT 1000
2018-10-25 15:29:02 starting migration of CT 1000 to node 'prox2' (10.0.2.6)
2018-10-25 15:29:02 found local volume 'local-zfs:subvol-1000-disk-0' (in current VM config)
2018-10-25 15:29:02 start replication job
2018-10-25 15:29:02 guest => CT 1000, running => 0
2018-10-25 15:29:02 volumes => local-zfs:subvol-1000-disk-0
2018-10-25 15:29:03 create snapshot '__replicate_1000-0_1540474142__' on local-zfs:subvol-1000-disk-0
2018-10-25 15:29:03 incremental sync 'local-zfs:subvol-1000-disk-0' (__replicate_1000-0_1540473601__ => __replicate_1000-0_1540474142__)
2018-10-25 15:29:03 send from @__replicate_1000-0_1540473601__ to rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540474142__ estimated size is 150M
2018-10-25 15:29:03 total estimated size is 150M
2018-10-25 15:29:03 TIME        SENT   SNAPSHOT
2018-10-25 15:29:03 rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540473601__   name    rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540473601__   -
2018-10-25 15:29:04 15:29:04   57.5M   rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540474142__
2018-10-25 15:29:05 15:29:05    104M   rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540474142__
2018-10-25 15:29:06 15:29:06    135M   rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540474142__
2018-10-25 15:29:07 15:29:07    152M   rpool/data/subvol-1000-disk-0@__replicate_1000-0_1540474142__
2018-10-25 15:29:09 delete previous replication snapshot '__replicate_1000-0_1540473601__' on local-zfs:subvol-1000-disk-0
2018-10-25 15:29:09 (remote_finalize_local_job) delete stale replication snapshot '__replicate_1000-0_1540473601__' on local-zfs:subvol-1000-disk-0
2018-10-25 15:29:09 end replication job
2018-10-25 15:29:09 # /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=prox2' root@10.0.2.6 pvesr set-state 1000 \''{"local/prox1":{"storeid_list":["local-zfs"],"last_iteration":1540474142,"last_sync":1540474142,"last_try":1540474142,"fail_count":0,"duration":7.463389,"last_node":"prox1"}}'\'
2018-10-25 15:29:10 start final cleanup
2018-10-25 15:29:11 start container on target node
2018-10-25 15:29:11 # /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=prox2' root@10.0.2.6 pct start 1000
2018-10-25 15:29:13 migration finished successfully (duration 00:00:13)

Migration de la VM 1000 vers le nœud prox1

root@prox1:~# pct migrate 1000 prox1 --restart

Sauvegarde d’une VM

L’intérêt premier de la virtualisation c’est d’assimiler un ordinateur à un fichier. Un fichier peut donc être sauvegardé et copié à souhait. Il est possible de créer un instantané (snapshot) de la VM afin de la restaurer et cas d’un problème de mise mise à jour sensible.

Snapshot

On se place sur la ID-VM>Snapshots puis sur Take Snapshot. Saisir une description afin d’avoir un historique de l’état de la machine.

take-snapshot

En CLI : root@prox1:~# pct snapshot 1000 madescription

Backup

L’opération sera à peu près identique pour les sauvegardes complètes. On clique sur Backup et celle-ci va se faire à chaud.

En CLI : root@prox1:~# vzdump 1000 --mode suspend

Restore

Pour la restauration, se placer sur l’espace de stockage dédié aux sauvegardes, puis cliquer sur la sauvegarde en faisant restaurer. Saisir un nouvel ID ou le même.

En CLI : root@prox1:~# pct restore 1000 /var/lib/vz/dump/vzdump-lxc-1000-2018_11_14-13_52_19.tar

Upgrade de Proxmox

Les mises à jour depuis le dépôt « pve-no-subscription » sont risquées car toutes n’ont pas été testées et vérifiées à 100%.

Néanmoins, si Proxmox subit une mise à niveau (passage de la version 5.1 vers la 5.2), il est possible de faire la mise à niveau car les paquets sont présents dans le nouvelle ISO. Par sécurité, éteindre toutes les VMs avant la mise à jour de PVE et s’assurer que vos sauvegardes complètes sont viables.

Remarque : root@prox1:~# apt full upgrade