Proxmox VE fait partie de ces projets cool à vocation commerciale mais libre et distribué gratuitement avec toutes les fonctionalités (comme FreeNAS). Il s'agit d'une solution de virtualisation basée sur Linux-KVM + LXC, le tout avec un web-ui plutôt bien fichu. Aperçu des fonctionnalités:
Cluster simili-HA (non testé)
Web-ui HTML5
Multiples backend de stockage: local, LVM, iSCSi, Ceph, Gluster, ZFS
Snapshots à chaud
Backups à chaud
Ajout CPU/RAM/disk à chaud (pas testé)
Console Web noVNC (pas de plugin à installer!)
J'ai installé Proxmox 5.1 sur mon NUC et l'utilise actuellement pour propulser mes services privés @home répartis sur 6 machines virtuelles debian.
Par le passé, l'un des points les plus gênants de Proxmox VE à mon sens était la console VNC qui nécessitait l'installation d'un plugin navigateur avec les inconvénients que l'on connait: problèmes de clavier, temps de chargement du plugin (on rate le grub!!!), latence... et j'ai été très content de constater que tout se fait maintenant en HTML5 avec noVNC, merci Proxmox!
Je rédige cet article car tout comme FreeNAS j'ai ressenti un effet "wow" (en positif). On côtoie beaucoup de logiciels dans notre métier, libres ou pas, parfois mauvais, parfois passables, mais rarement très bons. Proxmox devrait être plus connu.
Virtualisation
KVM:
Proxmox utilise KVM pour la virtualisation, avec des périphériques virtio si le système invité le supporte (Linux + BSD family). Il est possible d'allouer une quantité fixe de RAM ou un provisionnement dynamique ce qui revient en fait techniquement à autoriser le ballooning. L'installation se fait à l'aide de la console noVNC en HTML5 et d'une ISO que l'on peut uploader via le web-ui.
Proxmox active également la fonctionnalité KSM qui permet de partager entre les VM les pages de mémoire similaires par mesure d'économie. L'ensemble est donc plutôt bien pensé.
On retrouve cependant les éternels bugs communs aux solutions KVM, tels que les VM qui ne veulent parfois pas s'arrêter, il faut se connecter en SSH et forcer l'extinction car le web-ui n'y parvient pas. Dommage.
LXC:
Historiquement, Proxmox VE se basait sur OpenVZ pour les containers. Désormais c'est LXC qui est utilisé, pour cause de souplesse si on en croit ce post sur le forum Proxmox. J'ai toujours trouvé OpenVZ supérieur en terme d'isolation et d'outils d'administration, mais ce projet n'est pas upstream et a longtemps été bloqué au kernel 2.6.32 et il semble que ce soit encore le cas aujourd'hui.
Donc le passage à LXC est une bonne chose d'autant que LXCFS semble présent! Pour rappel, LXCFS permet à un container de ne voir que la quantité de RAM qui lui est alloué (via top ou htop) idem pour l'espace disque avec df ce qui améliore l'isolation.
L'installation d'un container LXC se fait à partir de templates que l'on peut télécharger chez Proxmox et il est possible de choisir si on veut le faire fonctionner en mode unprivileged ou pas, pour plus de sécurité. Je n'utilise pas de containers LXC, je privilégie KVM pour plus de souplesse. En effet avec LXC il n'y a pas de migration de stockage possible et il n'est pas possible d'activer ou désactiver le mode unprivileged, il faut recréer le container. Cette implémentation semble donc un peu moins mure que celle de KVM.
Stockage, snapshots, backups
Le support des snapshots dépend du backend de stockage. Par défaut c'est un stockage local LVM-thin et ils sont supportés. Idem sur du stockage local qcow2. Les snapshots se font et se suppriment à chaud, rien à dire là dessus à part que ça marche bien. En revanche pour les backups c'est une autre histoire. Proxmox dispose d'une planificateur de sauvegardes qui non seulement ne supporte que du full, mais en plus ne permet pas de définir une durée de rétention. C'est extrêmement basique, limite pas utilisable en l'état, je passe par du backuppc.
Pour revenir sur les backend de stockage (dont la liste est disponible ici) je ne suis pas parvenu à faire fonctionner Zfs over iScsi, il semble que cela nécessite une connexion SSH avec le NAS, un choix de conception étrange. Donc je me contente du local (LVM-thin) et d'un datastore NFS.
Il faut noter que l'on peut uploader des iso directement depuis le web-ui pour les mettre dans un datastore, et c'est super.
Conclusion
Proxmox constitue une bonne alternative à ESXi pour un labo @home ou pour une infra de virtualisation maitrisée de A à Z. Espérons que le produit continuera à mûrir sur les containers et la partie sauvegarde, en tous cas merci!
Il y a deux ans j'affirmais aimer systemd dans l'article systemd, c'est bien. Aujourd'hui je parle de Firewalld, un service et ensemble d'outils permettant de gérer le pare-feu sous Linux.
La base du firewall sous Linux c'est iptables, et quand on a compris et beaucoup pratiqué, c'est pas si compliqué. Mais il y a toujours deux points qui me gênent:
Il n'y a pas de service officiel pour charger les règles au démarrage, il faut faire son propre script ou en emprunter à droite à gauche.
Les règles sont quand même indigestes et bas niveau, ce qui n'est pas toujours nécessaire.
Firewalld implémente un système de "zones" dans lesquelles vous allez définir des paramètres, autoriser des services: internet, public, dmz... elles peuvent être définies à partir de l'interface ou de la source, c'est assez souple. Le paramétrage se fait soit en cli (firewalld-cmd) soit graphiquement (firewall-config) ou encore au travers d'une api et introduit la notion de "permanent" pour savoir si il faut conserver les modifications au démarrage.
Bien entendu, firewalld est un service système donc il n'y a pas de script à écrire pour charger ses règles au boot, il suffit de l'activer dans sytemd.
Firewalld est présent sur Fedora, CentOS, RedHat mais peut être installé sur d'autres sytèmes comme Debian car il est proposé dans les dépôts. Et moi, je migre mes serveurs sur Firewalld avec prise en charge par Ansible, parce que je gagne un temps fou et je fais les choses proprement.
Merci Red Hat ces logiciels qui terminent en "d" et qui modernisent un peu Linux :)
Ceph fait du stockage distribué. Il permet de répartir des données sur plusieurs machines avec réplicas, assurant ainsi une certaine sécurité et résilience.
Sauf que ça c'est la théorie, en pratique mon expérience a été assez mauvaise et non seulement source d'interruptions de service mais aussi d'un niveau de stress très important (jusqu'à ne plus dormir la nuit). Parce que oui perdre un serveur de prod n'est déjà pas agréable, mais quand il s'agit du stockage c'est encore pire.
Problème 1: l'usine à gaz
Ceph est gros, très gros, pour le compiler prévoyez au minimum 8GB de ram (sous peine de faire exploser votre machine) et plusieurs heures.
Ensuite pour être à l'aise prévoyez des machines bien dimensionnées (Xeon), beaucoup de RAM (1GB par TB) et du stockage SSD pour la journalisation. A l'usage ne vous étonnez pas de voir la RAM et la swap proche de la saturation, c'est le rythme de croisière.
Et puis l'architecture n'est pas simple il y a les OSD, les PGs, les différents services, et les logs parfois pas très clairs qui vous disent que la reconstruction est bloquée sans vraiment donner de raison.
Problème 2: les bugs
Sur la version Kraken (11.2) il existe une fuite de mémoire avec le service ceph-mgr. La solution est donc de le couper. Sauf que son rôle est justement de contrôler l'utilisation de la mémoire, donc le serveur va naturellement gonfler au fil des mois jusqu'à finir par exploser en vol. Il faut donc régulièrement lancer ceph-mgr puis le couper.
Le hic, c'est que dans le cas où votre serveur est déjà bien chargé (RAM + swap), le lancement de ceph-mgr ajoute un poids supplémentaire ce qui peut amener des lag sur le cluster le temps que la mémoire baisse... et ça c'est très mauvais. Dans mon cas cela a fait basculer plusieurs machines virtuelles en readonly.
Problème 3: ceph-deploy
Avec la mouvance devops il est de plus en plus courant de vouloir installer les choses sans devoir mettre les mains dans le cambouis, faire du sysadmin sans rien connaître en sysadmin quoi. Et c'est problématique. Certes c'est rapide et facile, mais en cas de panne on ne sait pas quoi faire car on ne sait pas comment marche le système.
Ceph-deploy fait le boulot à votre place, et dans le cas où ce n'est pas vous qui avez monté l'infra, si vous ne disposez pas du répertoire contenant les clés et la configuration, bon courage pour manipuler le cluster (ajout ou retrait de nodes). De plus ceph-deploy réserve des surprises en installant pas forcément la version qu'on lui demande...
Problème 4: les performances
Même avec un setup assez costaud (plein de RAM et de SSD) les I/O des VM qui sont stockées dessus sont décevantes. C'est un ressenti, mais à l'aire du SSD et/ou du stockage en RAID10, une installation d'une VM debian stockée sur cluster Ceph parait interminable.
Problème 5: résilience
Dans un cluster de 3 nodes on se dit qu'on est tranquilles car on peut en perdre 2 et continuer à fonctionner, un peu comme avec un RAID1 de 3 disques. Sauf qu'en pratique, il faut au minimum 2 nodes actives... Et oui, j'ai testé sur un cluster Ceph 0.96 et 11.2, dans les deux cas les données ne sont plus accessibles s'il ne reste qu'une seule node en vie.
Problème 6: targetcli
C'est le daemon iscsi de Ceph. Le problème ? Il perd sa conf partiellement ou totalement à chaque reboot. Prévoyez un targetctl restore systématique et un downtime possible si vous devez effectuer cette opération.
Conclusion: abandon
Alors que Ceph est censé apporter une continuité de service et donc un sérénité pour les admin, j'ai expérimenté le contraire. Les nombreux downtimes et les fois où j'ai été à deux doigts de perdre l'intégralité du stockage (et donc des machines virtuelles) m'ont causé des nuits blanches d'angoisse.
Les VM sont en cours de migration vers un SAN artisanal à base de Debian + iscsitarget. Il n'est peut-être redondé mais il est fiable, il n'y a pas de fuite de RAM, et s'il y a le moindre pépin nous connaissons les couches de A à Z pour pouvoir diagnostiquer.
En ce qui me concerne Ceph est une usine à gaz qui n'est pas production ready et j'espère ne plus avoir à y toucher de ma vie.
Attention ceci n'est un comparatif entre backuppc et borg mais une courte réflexion. Je cherche à me débarrasser de backuppc pour les raisons suivantes:
Sous le capot c'est l'usine à gaz et c'est un enfer à installer surtout avec le webui quand votre distribution ne le propose pas ou pas complètement (genre FreeBSD).
Je n'aime pas du tout la planification des backup qu'on ne peut pas définir à des horaires (sauf avec des crons).
Il n'est pas disponible dans Nix alors que je migre vers NixOS (j'ai songé à le packager, mais cela me semble trop hardcore pour débuter).
Du coup j'examine les solutions alternatives de backup et tout le monde ne parle que de borg. Ce logiciel a l'air intéressant mais il semble plus adapté à la sauvegarde d'une machine individuelle qu'à l'utilisation dans un parc de centaines de serveurs. En effet les sauvegardes avec Borg se font en "push", il faut l'installer sur chaque serveur qui va ensuite pousser ses sauvegardes vers un repo distant. Avec Backuppc c'est du "pull", un unique serveur se charger d'aller chercher les données de vos serveurs distants.
Je pense que les deux solutions se défendent. L'avantage du pull (backuppc) c'est qu'on centralise la gestion, la surveillance et le stockage en un point, il n'y a rien à faire sur les serveurs. L'inconvénient est que votre serveur de sauvegarde doit disposer des accès root à l'intégralité de votre parc, ce qui peut constituer une faiblesse en terme de sécurité. Le push (Borg) est beaucoup plus sécurisé, par contre il faut l'installer et le gérer sur chaque machine ce qui ne doit pas être évident quand on en a des centaines.
La question est de savoir qui a raison. Faut-il faire ses sauvegardes en push et privilégier la sécurité ou en pull et privilégier la facilité de gestion ?
Lorsque que Canonical a annoncé l'abandon de Unity, j'ai dit que c'était dommage car cette interface était intéressante et proposait une alternative à ce qui existe à côté. Mais à côté de cela j'ai cru comprendre qu'il était facile de refaire la même chose avec GNOME 3 et quelques extensions. Et en effet, c'est possible:
Il s'agit d'une capture d'écran réalisée sur openSUSE Tumbleweed en version GNOME bien entendu, avec les modifications suivantes:
Extension Alternatetab (aperçu des fenêtres lors du ALT+TAB, de base on ne voit que l'icône).
Extension Dash to dock (le dock, personnalisable).
Gnome tweak (inclus dans GNOME) pour remettre les boutons de miniaturisation et maximisation sur les bordures de fenêtres.
Nemo qui remplace Nautilus, un peu plus personalisable.
(et le wallpaper mais vous l'avez déjà remarqué).
Il manque encore certains éléments mais je pense qu'il est possible d'y remédier:
Un thème d'icônes et de fenêtres plus colorés.
Un gestionnaire de bureaux virtuels visible directement permettant de switcher rapidement sans devoir entrer dans le menu activités.
Des bordures de fenêtre moins épaisses.
L'orientation de Canonical vers GNOME permettra donc à Ubuntu de conserver son identité visuelle tout en s'épargnant énormément de développement redondant avec ce qui existe déjà (une habitude pour la firme). J'attends avec impatiente de voir ce que va donner Ubuntu 17.10.