Démarrer l’installation d’un clusteur de 3 serveurs dédié chez OVH.
Pour l’exemple j’ai choisi des serveurs dédiés avec 64Go Ram et différentes configurations de disques dur (SSD 2*480Go, Sata 4*2TO).
La 1ère étape consiste à installer les serveurs et le choix du partitionnement / système de fichier ZFS permet ainsi de profiter des fonctions pratiques comme les réplications et snap shot …
Documentzation OVH :
https://docs.ovh.com/fr/dedicated/



CPU : Intel Xeon E5-1630v3 – 4c/8t – 3.7 GHz/3,8 GHz
Mémoire: 64 Go DDR4 ECC
Stockage: 2 x 480 Go SSD SATA Soft RAID
CPU : Intel Xeon E5-1630v3 – 4c/8t – 3,7 GHz/3,8 GHz
Mémoire : 64 Go DDR4 ECC
Stockage: 4 x 2 To HDD SATA Soft RAID

Pour le swap je défini sa taille à 1/4 de la RAM (64Go) soit donc 16 Go. Etant donné que j’ai 2 disques il suffit de définir 8Go.
Pour le volume /var/lib/vz j’ai choisi le système de fichier ZFS en RAID1 (ayant que 2 disques sur ce serveur).
zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zp0 416G 860K 416G - - 0% 0% 1.00x ONLINE -
zfs list
NAME USED AVAIL REFER MOUNTPOINT zp0 680K 403G 96K none zp0/zd0 104K 403G 104K /var/lib/vz
df -h
Filesystem Size Used Avail Use% Mounted on udev 32G 0 32G 0% /dev tmpfs 6.3G 1.3M 6.3G 1% /run /dev/md3 20G 3.1G 16G 17% / tmpfs 32G 43M 32G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/md2 988M 91M 831M 10% /boot /dev/sda1 511M 168K 511M 1% /boot/efi zp0/zd0 404G 128K 404G 1% /var/lib/vz /dev/fuse 128M 16K 128M 1% /etc/pve tmpfs 6.3G 0 6.3G 0% /run/user/0
zpool history
History for 'zp0': zpool create -R /tmp/a -f -m none -o ashift=12 zp0 mirror /dev/sdb5 /dev/sda5 zpool set autoexpand=off zp0 zpool set autoreplace=off zp0 zfs set recordsize=128KB zp0 zfs set xattr=sa zp0 zfs set acltype=posixacl zp0 zfs create zp0/zd0 -o canmount=off zfs set quota=448425623552B zp0/zd0 zfs set recordsize=128KB zp0/zd0 zfs set xattr=sa zp0/zd0 zfs set acltype=posixacl zp0/zd0 zfs set compression=off zp0/zd0 zfs set mountpoint=/var/lib/vz zp0/zd0 zfs inherit -S canmount zp0/zd0 zpool export -a zpool import -aN -d /dev/disk/by-id -o cachefile=none
zpool status
pool: zp0 state: ONLINE status: Some supported and requested features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x55cd2e414dce04b0-part5 ONLINE 0 0 0 wwn-0x55cd2e414d51121d-part5 ONLINE 0 0 0 errors: No known data errors

Pour le swap je défini sa taille à 1/4 de la RAM (64Go) soit donc 16 Go. Etant donné que j’ai 4 disques il suffit de définir 4 Go ainsi le swap sera réparti sur les 4 disque pour obtenir un total de 16Go.
Pour le volume / et /var/lib/vz, j’ai choisi le système de fichier ZFS en RAID5, ainsi 2 pools zfs en raidZ1 vont être crées.
zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zp0 19.5G 3.26G 16.2G - - 1% 16% 1.00x ONLINE - zp1 14.5T 1.70M 14.5T - - 0% 0% 1.00x ONLINE -
zfs list
NAME USED AVAIL REFER MOUNTPOINT zp0 3.26G 15.6G 96K none zp0/zd0 3.26G 15.6G 3.26G / zp1 1006K 10.4T 140K none zp1/zd1 151K 3.62T 151K /var/lib/vz
df -h
Filesystem Size Used Avail Use% Mounted on udev 32G 0 32G 0% /dev tmpfs 6.3G 1.4M 6.3G 1% /run zp0/zd0 19G 3.3G 16G 18% / tmpfs 32G 40M 32G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/md2 988M 90M 831M 10% /boot /dev/sdb1 511M 168K 511M 1% /boot/efi zp1/zd1 3.7T 256K 3.7T 1% /var/lib/vz /dev/fuse 128M 16K 128M 1% /etc/pve tmpfs 6.3G 0 6.3G 0% /run/user/0
zpool history
History for 'zp0': zpool create -R /tmp/a -f -m none -o ashift=12 zp0 mirror /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3 zpool set autoexpand=off zp0 zpool set autoreplace=off zp0 zfs set recordsize=128KB zp0 zfs set xattr=sa zp0 zfs set acltype=posixacl zp0 zfs create zp0/zd0 -o canmount=off zfs set quota=21474836480B zp0/zd0 zfs set recordsize=128KB zp0/zd0 zfs set xattr=sa zp0/zd0 zfs set acltype=posixacl zp0/zd0 zfs set compression=off zp0/zd0 zfs set mountpoint=/ zp0/zd0 zfs inherit -S canmount zp0/zd0 zpool export -a zpool import -N zp0 History for 'zp1': zpool create -R /tmp/a -f -m none -o ashift=12 zp1 raidz1 /dev/sdc5 /dev/sdd5 /dev/sda5 /dev/sdb5 zpool set autoexpand=off zp1 zpool set autoreplace=off zp1 zfs set recordsize=128KB zp1 zfs set xattr=sa zp1 zfs set acltype=posixacl zp1 zfs create zp1/zd1 -o canmount=off zfs set quota=3976624865280B zp1/zd1 zfs set recordsize=128KB zp1/zd1 zfs set xattr=sa zp1/zd1 zfs set acltype=posixacl zp1/zd1 zfs set compression=off zp1/zd1 zfs set mountpoint=/var/lib/vz zp1/zd1 zfs inherit -S canmount zp1/zd1 zpool export -a zpool import -aN -d /dev/disk/by-id -o cachefile=none
zpool status
pool: zp0 state: ONLINE status: Some supported and requested features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda3 ONLINE 0 0 0 sdb3 ONLINE 0 0 0 sdc3 ONLINE 0 0 0 sdd3 ONLINE 0 0 0 errors: No known data errors pool: zp1 state: ONLINE status: Some supported and requested features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. config: NAME STATE READ WRITE CKSUM zp1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 wwn-0x5000cca097ce27b1-part5 ONLINE 0 0 0 wwn-0x5000cca0bcd162b5-part5 ONLINE 0 0 0 wwn-0x5000cca097d00cb3-part5 ONLINE 0 0 0 wwn-0x5000cca097cdb805-part5 ONLINE 0 0 0 errors: No known data errors
ZFS - Vérifier la compression
Vérifier la compression ZFS, l’option ATIME permet d’optimiser les accés disque de notre serveur.
openzfs – performance-tuning
zfs-101-understanding-zfs-storage-and-performance
Activer la compression ZFS
Activer la compression ZFS permet de réduire le entrées sorties IO augmentant les performances de lecture / écriture en prenant légèrement des ressources CPU (Et oui ecrire et lire moins de données compressée en lz4 est plus rapide due à la vitesse des disques dur, même pour un ssd). De plus on gagnera de la place sur le disque.
zfs get compression
NAME PROPERTY VALUE SOURCE zp0 compression off default zp0/zd0 compression off local zp1 compression off default zp1/zd1 compression off local
Activer la compression :
zfs set compression=lz4 zp0
zfs set compression=lz4 zp0/zd0
Vérifier :
zfs get all | grep compress
zp0 compressratio 1.01x - zp0 compression on local zp0 refcompressratio 1.00x - zp0/zd0 compressratio 1.01x - zp0/zd0 compression on local zp0/zd0 refcompressratio 1.01x - zp1 compressratio 1.00x - zp1 compression on local zp1 refcompressratio 1.00x - zp1/zd1 compressratio 1.00x - zp1/zd1 compression on local zp1/zd1 refcompressratio 1.00x -
Désactiver ATIME
Par défaut l’option atime est activée; A chaque fois q’un finchier est ouvert zfs va enregistrer cette date, ce qui engendre des accès disques supplémentaire.
Sur un serveur, avons nous vraiment besoin de cette date de ernière lecture ? Pour ma part je préfère optimiser les accès disque, est donc je désactive cette option.
zfs get all | grep time
zfs set atime=off zp0
ZFS ARC (Adaptive Replacement Cache)
ZFS ARC est un systeme de cache pour accelerer les accès disque. L’inconvénient c’est qu’il peut parfois être gourmand en mémoire RAM. En fait il prend l’espace libre à un instant T, mais la libère pas toujours aussi vite.
Voici quelques conseils en anglais :
https://www.cyberciti.biz/faq/how-to-set-up-zfs-arc-size-on-ubuntu-debian-linux/
surveiller la RAM : free -g
zpool iostat -v
arc_summary | more
cat /proc/spl/kstat/zfs/arcstats |grep c_
Le principe gérnéral :
Désactiver ou réduirre la cache ZFS ARC pour des volumes utilisant MYSQL, NGINX, APACHE … et utiliser plutôt le système de cache implémenté dans ces applications.
https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Module%20Parameters.html
https://dannyda.com/2021/12/20/how-to-check-zfs-io-status-and-arc-l2arc-zil-slog-status/https://wiki.deimos.fr/ZFS_:_Le_FileSystem_par_excellence.html#Le_cache_ARC_ZFS
https://pve.proxmox.com/wiki/ZFS_on_Linux
2GB = 2 147 483 648 Bytes 4GB = 4 294 967 296 Bytes
cat /sys/module/zfs/parameters/zfs_arc_max
echo "$[2 * 1024*1024*1024 - 1]" >/sys/module/zfs/parameters/zfs_arc_min echo "$[4 * 1024*1024*1024]" >/sys/module/zfs/parameters/zfs_arc_max
vi /etc/modprobe.d/zfs.conf
options zfs zfs_arc_min=2147483647
options zfs zfs_arc_max=4294967296
Alertes e-mail
Etre alerté par e-mail d’un problème sur le serveur. Par defaut les services envoient des alertes dans la boite local du server postmaster / root … Sinon, au travers du fichier de configuration il est aussi possible de configurer l’email, comme par exemple les alerte ZFS avec le service ZED.
Ajouter un email dans /etc/aliases
vi /etc/aliases
# See man 5 aliases for format postmaster: root root: monemail@mondomaine.fr
Puis executer la commande suivante pour actualiser aliases.db :
newaliases
Puis redémarrer postfix :
systemctl restart postfix
Tester :
echo test | mail -s "test message" root
zfs zed.rc
vi /etc/zfs/zed.d/zed.rc
# Email address of the zpool administrator for receipt of notifications;
ZED_EMAIL_ADDR= »root »
arc_summary | more
free -g
total used free shared buff/cache available Mem: 62 2 59 0 0 59 Swap: 3 0 3
arc_summary | more
ARC status: HEALTHY Memory throttle count: 0 ARC size (current): 3.0 % 963.4 MiB Target size (adaptive): 6.2 % 2.0 GiB Min size (hard limit): 6.2 % 2.0 GiB Max size (high water): 16:1 31.3 GiB
Commandes utiles
vi ~/.vimrc
apt-get install vim
vi ~/.vimrc
# Ne pas passer en mode visuel avec VI pour pouvoir copier / coller avec la souris set term=xterm
vi /etc/aliases
root: mon_email@domaine.fr
Installer fail2ban
apt install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Votre titre va ici
Your content goes here. Edit or remove this text inline or in the module Content settings. You can also style every aspect of this content in the module Design settings and even apply custom CSS to this text in the module Advanced settings.
Sécurisez le serveur Proxmox
Votre serveur étant fraichement installé, il convient de le sécuriser au plus vite.
– Connectez vous en SSH sur votre serveur et changez le mot de passe root. Ajoutez un nouvel utilisateur, et installez une clef ssh pour cet utilisateur, ajoutez le au groupe sudo.
Modifiez la conf sshd pour ne pas autoriser un l’acces root et n’autoriser que les accès avec clef SSH (pas de mot passe).
– Connectez-vous avec votre navigateur à Proxmox https://monserveur.fr:8006/
Configurez le firewal avec au minimum les règles suivantes :
- Autorisez l’accès SSH et web sur le port 8006 exclusivement pouy votre IP fixe.
- Autorisez les Pings afin que le monitoring d’OVH considère toujours votre serveur actif.
- Autorisez le protocole HTTP (temporairement) pour mettre en place un certificat LetsEncryp avec la méthos HTTP.
- Enfin, activez les firewall avec l’Input Plolicy sur DROP ou EJECT afin que tout ce qui n’est pas inscrit dans les règles du firewall soit bloqué.


Configuration réseau du serveur proxmox
IP V4 OVH et passerelle
L’adresse de la passerelle est constituée des trois premiers octets de l’adresse IP principale de votre serveur, le dernier octet étant de 254. Par exemple, si l’adresse IP principale de votre serveur est :
-
123.456.789.111
Votre adresse de passerelle sera alors :
-
123.456.789.254
IP V6 OVH et passerelle
La passerelle par défaut de votre Block IPv6 (IPv6_GATEWAY) est toujours IP:v:6FF:FF:FF:FF:FF.
Quelques exemples :
-
L’IPv6 du serveur est 2607:5300:60:62ac::/64
-
L’IPv6_GATEWAY sera alors 2607:5300:60:62FF:FF:FF:FF:FF
-
L’IPv6 du serveur est 2001:41D0:1:46e::/64
-
L’IPV6_GATEWAY sera alors 2001:41D0:1:4FF:FF:FF:FF:FF.
IP V6 pour les VM Proxmox
http://howto.zw3b.fr/linux/reseaux/howto-ipv6-proxmox-ovh
Il faut savoir qu’OVH propose un masque de 56 et non pas un masque de 64 (ce qui permet d’attribuer à nos VMs différents sous-réseaux).
Sur le « host proxmox » ajouter les routes par defaut sur une IP v6 :
post-up /sbin/ip -f inet6 route add 2001:41d0:8:54d1::1 dev vmbr0 post-up /sbin/ip -f inet6 route add default via 2001:41d0:8:54d1::1 pre-down /sbin/ip -f inet6 route del default via 2001:41d0:8:54d1::1 pre-down /sbin/ip -f inet6 route del 2001:41d0:8:54d1::1 dev vmbr0
Sur chaque container, mettre une ip v6 valide et comme passerelle celle inscrite comme route par défaut.