Le Blog Utux

Parce qu'il n'y a pas que Linkedin pour se faire mousser avec des articles techniques

ENLARGE YOUR HP PROLIANT MICROSERVER GEN8 - épisode 2

Rédigé par uTux

Wow, on parle souvent des smartphones impossibles à démonter, en ce qui concerne le serveur HP Proliant Gen8 c'est totalement l'inverse, tout se fait sans tournevis de manière évidente. On ouvre le boîtier, on débranche les connecteurs sur la carte mère, et on la tire vers l'arrière, et voilà.

Ouverture carte mère gen8

Une fois la carte mère extraite, il ne reste plus qu'à retirer le radiateur, enlever le Celeron puis insérer le Xeon, et après un petit changement de pâte thermique on remet le tout. Et au boot... ça marche !!

FreeNAS xeon

Le Xeon apporte un certain confort qui se ressent rapidement. L'exploration des partages Samba est plus fluide tout comme la navigation dans l'interface FreeNAS. Le démarrage des jails iocage aussi, même si non exempt de latences tant que le cache ARC n'est pas rempli :) Quand le prix des SSD de 1To baissera, je songerai à remplacer les disques mécaniques.

La plus grande qualité d'un sysadmin ?

Rédigé par uTux

On m'a posé cette question lors d'un entretien. C'est assez bateau et il existe un tas de réponses "par cœur" et pourtant elle m'a surpris. J'ai donc répondu de manière sincère la première chose qui m'est passée par la tête: être carré, être sérieux, parce qu'on est pas dans un labo, on est responsables de la production. Sur le coup, je pensais aux astreintes, aux sueurs lorsqu'un site web commercial affiche un 403 ou une page blanche, ou quand on me dit que "plus rien ne marche" et que c'est à moi de dépanner. Et puis je sortais tout juste de cette mauvaise expérience avec Ceph, la prod ça ne rigole pas.

Mais y réfléchissant après j'ai pensé à une réponse plus pertinente: la plus grande qualité d'un sysadmin, c'est d'être bien entouré. Que ce soit les collègues qui nous aident, le chef qui nous encourage, les développeurs toujours prêt à filer un bout de code pour dépanner ou aider à l'intégration de leur application, c'est très important. Un bon sysadmin a toujours ses potes (hors entreprise) sur Telegram, Jabber ou IRC pour discuter de tout et n'importe quoi et parfois de boulot.

Les autres questions portaient sur la technique, domaine dans lequel je suis plus à l'aise avec les 8 ans d'expérience dans le dos :)

FreeBSD: jouons avec iocage

Rédigé par uTux

En 2018, en matière de containers il n'y a pas que Docker ou LXC, il y a aussi FreeBSD et ses jails :) en fait ça existait longtemps avant et c'est plutôt bien fichu. J'ai longtemps utilisé le framework ezjail qui a l'avantage d'être simple et de fonctionner sans ZFS (j'avais un serveur anémique à base d'Atom 32 bit).

J'utilise FreeNAS et bien que leur web-ui permette depuis longtemps de créer des jails, cette solution est trop rigide, il est par exemple impossible d'upgrader une jail :( Bonne nouvelle, dans les dernières versions (avec le web-ui en beta ou via la ligne de commandes) on a droit à iocage qui est plus souple et supporte (entre autres) les upgrades.

Création d'une jail FreeBSD

Tout comme iohyve, il faut commencer par définir un pool de stockage ZFS. Cela peut être un pool existant, il ne l'écrase pas mais créé quelques datasets. Par exemple pour utiliser le pool data:

[root@freenas] ~# iocage activate data
ZFS pool 'data' successfully activated.

Ensuite on télécharge un template qui va servir à créer nos jails. Par exemple pour récupérer 11.1-RELEASE:

[root@freenas] ~# iocage fetch
[0] 9.3-RELEASE (EOL)
[1] 10.1-RELEASE (EOL)
[2] 10.2-RELEASE (EOL)
[3] 10.3-RELEASE
[4] 10.4-RELEASE
[5] 11.0-RELEASE (EOL)
[6] 11.1-RELEASE

Type the number of the desired RELEASE
Press [Enter] to fetch the default selection: (11.1)
Type EXIT to quit: 6
Fetching: 11.1-RELEASE

Downloading : MANIFEST [####################] 100% 0Mbit/s
Downloading : base.txz [####################] 100%  13.44Mbit/s
Downloading : lib32.txz [####################] 100%  12.66Mbit/s
Downloading : doc.txz [####################] 100%  10.76Mbit/s
Downloading : src.txz [####################] 100%  11.94Mbit/s
 11.94Mbit/sExtracting: base.txz... 
Extracting: lib32.txz... 
Extracting: doc.txz... 
Extracting: src.txz... 

* Updating 11.1-RELEASE to the latest patch level... 
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update4.freebsd.org... done.
Fetching metadata signature for 11.1-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 151 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150 done.
Applying patches... done.

The following files will be updated as part of updating to 11.1-RELEASE-p9:
[--- blablabla ---]
Installing updates... done.

On peut créer une jail nommée "unbound":

root@freenas:~ # iocage create -r 11.1-RELEASE -n unbound
unbound successfully created!

On lui met une adresse IP (en mode shared car j'ai encore quelques soucis avec le VNET):

root@freenas:~ # iocage set vnet=off unbound
Property: vnet has been updated to off
root@freenas:~ # iocage set ip4_addr="em0|192.168.0.201/24" unbound
Property: ip4_addr has been updated to em0|192.168.0.201/24

On démarre la jail:

root@freenas:~ # iocage start unbound
* Starting unbound
  + Started OK
  + Starting services OK

On entre dans la jail:

root@freenas:~ # iocage console unbound

FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
root@unbound:~ #

Autres features

  • Créer ses propres templates, utile pour créer des jails prêtes à l'emploi (avec SSH + authorized_keys, par exemple).
  • Upgrade des jails
  • Snapshots (et oui, zfs...)
  • VNET (la jail a sa propre stack réseau, utile pour les manipulations pare-feu ou vpn)
  • Limitations CPU & mémoire
  • Installation automatique de paquets
  • Montage de volumes bind
  • Création de jails kFreeBSD (à titre de proof of concept)
  • A la manière des dataset/pool zfs, chaque jail a des propriétés modifiables (get/set)
  • Ecrit en python

Conclusion

J'utilise iocage pour une jail backuppc et j'en suis plutôt content. Si l'aspect VNET reste à améliorer, on a quand même fait un grand pas par rapport à la solution maison de FreeNAS.

iocage c'est le meilleur de FreeBSD: les jails et zfs. La syntaxe est claire, facile à retenir et me donne presque envie de m'y remettre et de migrer tous mes services dessus. Je vous encourage à l'essayer! Je vous encourage aussi à manger du FreeNAS, c'est bon pour la santé.

Proxmox VE

Rédigé par uTux

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.

Proxmox VE

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!

J'ai acheté un NUC NUC6CAYH

Rédigé par uTux

Un seul serveur n'était pas suffisant pour moi, j'en ai donc acheté un deuxième. J'ai choisi un NUC6CAYH à 122€. Pour ce tarif on a droit à un mini-PC équipé d'un Intel Celeron J3455 (4@1,5GHz) sans RAM ni disque dur.

NUC

J'ai ajouté 8GB de RAM (Kingston KVR16LS11/8 pour 72€) et un disque dur 2,5" de 500GB que je stockais dans un placard. A propos de la RAM, attention car le NUC ne supporte que 8GB maximum et il faut respecter la QVL sous peine d'avoir un warning impossible à désactiver à chaque boot.

Matériel

Comme indiqué précédemment, ce NUC vient avec un Intel Celeron J3455, avec 4 vrais coeurs à 1,5GHz et un turbo boost à 2,3GHz. Le tout contenu dans un TDP de 10W, gravé en 14nm et avec les instructions de virtualisation et quelques features telles que AES-NI. Pour ce prix, et pour un usage modéré, c'est très intéressant. L'ensemble n'est pas fanless, mais grandement silencieux à l'usage.

NUC front

Peut-on se risquer à parler d'un Raspberry Pi killer? Certainement pas, étant donné la gamme de prix et de matériel complètement différents. Mais il faut constater qu'un usage serveur @home est bien plus envisageable avec ce NUC qu'avec une framboise.

NUC rear

Le boîtier peut s'ouvrir par le dessus ou par le dessous, en retirant 4 grosses vis très accessibles, excellent point :) Par le dessous on accède à la cage du disque dur (2,5") ainsi qu'aux 2 slots de RAM

Il faut aussi noter qu'un kit de fixation vertical est fourni, par exemple pour fixer le NUC derrière un écran. Autre chose, ce mini-PC est assez lourd, vu ses dimensions je m'attendais à quelque chose de plus léger, mais ce n'est pas bien grave.

Système d'exploitation

S'agissant d'une plateforme x86_64 avec support uefi et legacy-bios, on peut se faire plaisir. J'ai pour le moment testé 3 systèmes d'exploitation, orientés virtualisation puisque c'est l'usage que je compte faire de ce NUC.

Système d'exploitation
Supporté
Notes
XenServer 7.4
Oui Le support d'installation USB boote correctement mais il faut utiliser un dépôt HTTP. Cela peut être fait assez facilement en décompressant l'ISO sur un autre poste puis en lançant un petit serveur http avec python.
VMware ESXi 6.5
Non Interface réseau non supportée. Il existe certaines astuces pour se construire son propre medium d'installation avec le bon pilote, mais n'étant de toutes manières pas fan de la console HTML5 je ne suis pas allé plus loin.
Proxmox VE 5.1
Oui Parfaitement fonctionnel.

Rien à signer du côté des performances, ni rapide ni lent pour de la virtualisation, surtout avec un stockage sur disque mécanique. Idéal pour un petit labo ou serveur à la maison avec des VM Linux pouvant se contenter de peu de RAM. Je créé autant que possible mes VM avec une allocation dynamique 128/256MB et un stockage 30GB, ce qui permet d'en faire tourner pas mal simultanément.

Conclusion

Pour le moment je suis plutôt satisfait de ce NUC, même si je regrette la limitation à 8GB de RAM. Il offre un bon rapport qualité/prix pour un serveur @home et le Celeron J3455 se comporte plutôt bien avec des containers et de la virtualisation. Ce petit serveur Proxmox VE va se révéler très utile pour compléter mon NAS sous FreeNAS.

EDIT 01/05/2018: Je rencontre des problèmes avec ce NUC. J'ai défini le boot en "legacy" (non uefi) sur le disque, mais il ne détecte pas d'OS au démarrage et je suis obligé, à chaque fois, de brancher un clavier et utilise le menu pour sélectionner mon disque. Ensuite je rencontre des freezes à peu près chaque semaine, c'est très chiant. Je viens de faire une mise à jour du Bios, on va voir si cela résout les problèmes.

EDIT 29/07/2018: Je ne rencontre plus de freezes ni de problèmes de boot depuis que le bios a été mis à jour :)