Featured image of post Proxmox - Tips and tricks

Proxmox - Tips and tricks

Ecrit par ~ zwindler ~

OK je reparle de Proxmox ;-)

Certains trolls velus (😘) m’ont reprochĂ© de trop parler de XenServer / XCP-ng / Xen Orchestra, ces derniers temps.

Pour leur faire plaisir (car que je suis quelqu’un de sympa, en vrai), voici donc un article qui parle de tous les petits trucs que je trouve cool dans Proxmox VE et qui ne sont (je pense) pas forcĂ©ment connus des dĂ©butants.

Je ne parlerais donc pas des trucs de base comme le fait qu’on puisse piloter les upgrades depuis l’UI, que les backups sont intĂ©grĂ©es (mĂȘme s’il y a un backup server plus poussĂ© aussi) ou le firewall depuis l’UI (que je n’ai pas utilisĂ© en vrai), ou bien encore la gestion des certificats Let’s Encrypt pour l’UI.

C’est parti !

Avoir un cluster de virtualisation open source

Un truc trĂšs fort avec Proxmox VE est quand mĂȘme que vous disposez d’un OS open source, clĂ© en main, disposant en plus d’un mĂ©canisme de clustering “prod ready”. Grand luxe !

Tout est gĂ©rĂ© par un cluster corosync. L’ajout des nodes se fait via l’interface graphique en quelques clics (ou via ligne de commande si vous ĂȘtes un foufou comme moi).

Normalement, cette fonctionnalitĂ© est quand mĂȘme rĂ©servĂ©e Ă  un usage dans un LAN dĂ©diĂ©. Mais j’ai quand mĂȘme abondamment tordu la fonctionnalitĂ© pour la faire marcher, au fil des ans, chez des hĂ©bergeurs grand public, voire au travers d’Internet, dans des rĂ©seaux NATĂ©, etc…

Et avec un PRA !

Avec mon cluster Proxmox, j’ai aussi un plan de reprise d’activitĂ© (PRA). Les dĂ©veloppeurs de Proxmox VE ont astucieusement tirĂ© parti de la fonctionnalitĂ© de rĂ©plication asynchrone de ZFS pour pĂ©riodiquement (par dĂ©faut toutes les 15 minutes) synchroniser des disques entre des machines distantes.

Note: ZFS, j’en ai aussi beaucoup parlĂ©.

Tout est prĂ©vu dans l’interface graphique, il n’y a rien Ă  faire Ă  part avoir un cluster Proxmox VE et du stockage ZFS, ça “juste marche”.

Les containers LXC

C’est littĂ©ralement LE TRUC que j’utilise le plus dans Proxmox VE. Je fais trĂšs peu de machines virtuelles KVM car je loue des machines trĂšs peu puissantes (et pas chĂšres), pas capables de faire de la virtualisation (pas d’instructions VT-x sur les Atom C2350).

MĂȘme si j’utilise tous les jours des containers de type “Docker” au travail, ce n’est pas ce que je cherche quand je monte des petites machines sur mon infra perso.

LXC est un bon compromis : j’ai le sentiment d’avoir une machine virtuelle (j’installe des OS, des packages, dĂ©pose mon application oĂč je veux, …) sans la lourdeur de la VM.

Les temps de boot sont quasiment instantanĂ©s, l’overhead CPU, surtout sur mes machines faiblardes, est trĂšs lĂ©ger. Mais le plus important reste l’empreinte mĂ©moire ridicule. J’ai plusieurs containers hĂ©bergeant des serveurs webs qui tournent avec moins de 128 Mo de RAM. Impossible avec une machine virtuelle KVM.

Exemple avec un reverse proxy nginx en frontal de plusieurs petits sites. Le container consomme quelques Mo.

En revanche, l’isolation est moins bonne (on partage un kernel donc forcĂ©ment…). En termes de sĂ©curitĂ© c’est moins bien, et on arrive parfois Ă  des petits soucis comme j’ai pu en parler dans l’article Jeedom dans un container LXC.

Je ferai (un jour) un article dédié aux containers LXC tellement je trouve ça cool.

Tuning ZFS

La croyance populaire veut que ZFS nĂ©cessite beaucoup de RAM pour fonctionner. C’est faux (sauf si vous activez la dĂ©duplication).

Dans la documentation officielle de Solaris (les inventeurs de ZFS), on parle de 1 Go de RAM (dont 768 Mo pour le systĂšme).

The minimum amount of memory needed to install a Solaris system is 768 MB. However, for good ZFS performance, use at least one GB or more of memory.

Sauf que des fois, ZFS est un peu trop gourmand, par dĂ©faut. C’est typiquement le cas sur mes Atom qui n’ont que 4 Go de RAM, sur lesquels ZFS croque 50% de la RAM pour son cache ARC.

On tune ça avec une simple commande :

#Restrict to 512MB
echo 536870912 |sudo tee -a /sys/module/zfs/parameters/zfs_arc_max

#Restrict to 4GB
echo 4294967296 |sudo tee -a /sys/module/zfs/parameters/zfs_arc_max

Plus de tips sur le tuning de ZFS sont disponibles sur ce post de admin magazine.

Monter des disques LXC/QEMU avec ZFS

Un truc un peu dĂ©stabilisant quand on passe sur ZFS comme gestionnaire de stockage pour son cluster Proxmox VE est qu’on ne voit plus les disques comme des fichiers (.qcow2) comme avant.

Rappelez-vous, ZFS est aussi un gestionnaire de stockage, pas juste un filesystem.

Pour accĂ©der Ă  vos disques de machines virtuelles, il faut aller chercher dans les fichiers spĂ©ciaux dans /dev. Par exemple pour la VM avec l’ID 100 :

ls -l /dev/zvol/rpool/vm-100*
lrwxrwxrwx 1 root root 10 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0 -> ../../zd16
lrwxrwxrwx 1 root root 12 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0-part1 -> ../../zd16p1
lrwxrwxrwx 1 root root 12 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0-part2 -> ../../zd16p2
lrwxrwxrwx 1 root root 12 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0-part5 -> ../../zd16p5

Note: on peut d’ailleurs directement monter les partitions dans notre hyperviseur avec un bĂȘte mount. Avouez que c’est plus pratique Ă  monter qu’un disque qcow2 nan ?

Pour accĂ©der Ă  vos disques de containers LXC, c’est encore plus simple, ils sont Ă  la racine de votre pool ZFS. Par exemple pour le container LXC avec l’ID 201 :

ls /rpool/subvol-201-disk-0/
bin   dev  home  lib64	     media  opt   root	sbin	 srv  tmp  var
boot  etc  lib	 lost+found  mnt    proc  run	selinux  sys  usr

TĂ©lĂ©charger les ISOs directement depuis l’UI

LĂ , c’est vraiment du “nice to have” mais j’aime bien ce genre de fonctionnalitĂ©s pour aider l’admin: vous pouvez directement tĂ©lĂ©charger vos images ISO pour installer vos machines virtuelles directement depuis la console Web.

Et de la mĂȘme maniĂšre, vous pouvez aussi tĂ©lĂ©charger les images de containers LXC depuis une URL ou depuis la base d’images dĂ©jĂ  accessibles depuis Proxmox VE (la section “systĂšme” me semble ĂȘtre une sous-sĂ©lection des images officielles disponibles sur le site de LXD).

Optimisation de perf pour les VMs

J’avais fait un article pour parler des optimisations que j’avais pu faire pour les machines virtuelles sous Proxmox VE. Le titre de l’article cite pfsense mais c’est applicable Ă  tous les OS en rĂ©alitĂ©.

Optimisation de PFsense dans Proxmox VE

L’optim consistant Ă  dĂ©cocher “Use tablet for pointer” est vraiment hyper utile et marche trĂšs souvent si vous remarquez un usage CPU idle anormal sur vos VMs.

Automatisation

Si vous ĂȘtes fans d’infrastructure as code (as you should), sachez qu’il existe :

J’utilise en prod les modules Ansible, ce qui me permet de gĂ©nĂ©rer Ă  la fois une VM puis d’installer des choses dedans avec mes playbooks. Hyper utile.

Je ferai probablement un article pour le provider terraform car il me fait de l’oeil (mais du coup, dur de chaĂźner l’install des logiciels dans la VM aprĂšs instanciation).

Monitoring

Enfin, si vous avez dĂ©jĂ  une infra Prometheus, sachez qu’il existe plusieurs exporters pour avoir de jolis graphes de vos Proxmox. Je les avais testĂ©s Ă  l’occasion de cet article - Proxmox VE + Prometheus = <3.

Sachez que vous pouvez aussi directement brancher depuis la console votre cluster sur des TSDB de type InfluxDB ou Graphite (pas encore testé mais pourquoi pas :D).

Fin de cet article

A plus de 9000 signes, je pense qu’il faut que j’arrĂȘte lĂ  pour ce premier article sur les trucs que je trouve cool et les astuces que j’utilise souvent sur Proxmox VE.

Cependant, je ne m’interdis pas d’en Ă©crire un autre plus tard, si jamais je retrouve assez de choses Ă  dire.

En connaissez-vous d’autres que vous voudriez partager ? Est-ce que vous avez envie que je creuse un point en particulier ?

  • InfluxDB comme metrics server ?
  • Le provider Terraform ?
  • LXC ?
Licensed under CC BY-SA 4.0

Vous aimez ce blog ou cet article ? Partagez-le avec vos amis !   Twitter Linkedin email Facebook

Vous pouvez Ă©galement vous abonner Ă  la mailing list des articles ici

L'intégralité du contenu appartenant à Denis Germain (alias zwindler) présent sur ce blog, incluant les textes, le code, les images, les schémas et les supports de talks de conf, sont distribués sous la licence CC BY-SA 4.0.

Les autres contenus (thÚme du blog, police de caractÚres, logos d'entreprises, articles invités...) restent soumis à leur propre licence ou à défaut, au droit d'auteur. Plus d'informations dans les Mentions Légales

Généré avec Hugo
ThÚme Stack conçu par Jimmy