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 (8192 MB).

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 2 disques il suffit de définir 8Go (8192 MB).

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
data 3.61T 218K 3.61T - - 0% 0% 1.00x ONLINE -
zp0 19.5G 2.90G 16.6G - - 0% 14% 1.00x ONLINE -
zfs list
NAME      USED  AVAIL     REFER  MOUNTPOINT
data 180K 3.50T 24K none
data/zd1 26K 3.50T 26K /var/lib/vz
zp0 2.90G 16.0G 24K none
zp0/zd0 2.90G 16.0G 2.90G /
df -h
Filesystem Size Used Avail Use% Mounted on
udev 32G 0 32G 0% /dev
tmpfs 6.3G 1.2M 6.3G 1% /run
zp0/zd0 19G 2.9G 16G 16% /
tmpfs 32G 28M 32G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/md2 988M 102M 820M 12% /boot
/dev/sda1 511M 5.9M 505M 2% /boot/efi
data/zd1 3.5T 128K 3.5T 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 ‘data’:
2023-08-23.21:13:08 zpool create -O acltype=posixacl -O compression=off -O recordsize=128K -O xattr=sa -R /tmp/a -f -m none data mirror /dev/sda5 /dev/sdb5
2023-08-23.21:13:08 zpool set ashift=12 data
2023-08-23.21:13:08 zpool set autoexpand=off data
2023-08-23.21:13:08 zpool set autoreplace=off data
2023-08-23.21:13:09 zfs create data/zd1 -o canmount=off
2023-08-23.21:13:09 zfs set quota=3.61T data/zd1
2023-08-23.21:13:14 zfs set mountpoint=/var/lib/vz data/zd1
2023-08-23.21:13:14 zfs inherit -S canmount data/zd1
2023-08-23.21:15:59 zpool export -a
2023-08-23.21:20:24 zpool import -aN -d /dev/disk/by-id -o cachefile=none

History for ‘zp0’:
2023-08-23.21:13:07 zpool create -O acltype=posixacl -O compression=off -O recordsize=128K -O xattr=sa -R /tmp/a -f -m none zp0 mirror /dev/sda3 /dev/sdb3
2023-08-23.21:13:07 zpool set ashift=12 zp0
2023-08-23.21:13:07 zpool set autoexpand=off zp0
2023-08-23.21:13:07 zpool set autoreplace=off zp0
2023-08-23.21:13:09 zfs create zp0/zd0 -o canmount=off
2023-08-23.21:13:09 zfs set quota=20G zp0/zd0
2023-08-23.21:13:13 zfs set mountpoint=/ zp0/zd0
2023-08-23.21:13:13 zfs inherit -S canmount zp0/zd0
2023-08-23.21:15:59 zpool export -a
2023-08-23.21:20:16 zpool import -N zp0

zpool status

pool: data
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
data ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-HGST_HUS726040ALA610_K7JJ0SEL-part5 ONLINE 0 0 0
wwn-0x5000cca25df16bb4-part5 ONLINE 0 0 0

errors: No known data errors

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

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

Ajouter le point de montage ZFS /VZ :

zfs set mountpoint=/VZ zp1
NAME      USED      AVAIL      REFER      MOUNTPOINT
zp0      2.96G      15.9G      24K none
zp0/zd0  2.96G      15.9G      2.96G      /
zp1      269K      10.7T       32.9K      /VZ
zp1/zd1  35.9K      3.61T      35.9K      /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
zpool import -a

#monter tous les volumes ZFS au démarrage :

systemctl enable zfs.target zfs-import.service zfs-mount.service

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

zfs set compression=lz4 zp1
zfs set compression=lz4 zp1/zd1

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 set atime=off zp0/zd0
zfs set atime=off zp1
zfs set atime=off zp1/zd1
Taille des sectors du volume zfs : ashift

Ashift définit la taille du « sector » de la partition zfs et peut donc influancer les performances des accès disques.

ashift=9 : 512B sectors (utilisé sur les disques anciens),
ashift=12 : 4K sectors (utilisé par défaut sur les disques actuels),
and ashift=13 : 8K sectors (plutôt utilisés avec les SSD).

L’installation standard par OVH set le ashift à la valeur 12, comme vous pouvez le voir avec la commande « zfs history » :

zpool set ashift=12 zp0

Liens utiles :

https://jrs-s.net/2018/08/17/zfs-tuning-cheat-sheet/


https://arstechnica.com/information-technology/2020/05/zfs-101-understanding-zfs-storage-and-performance/

 
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

 

Créer un volume ZFS apelé VZ

Créons un volume ZFS appelé vz sur l’ensemble des noeuds du furtur cluster de serveurs proxmox. Ainsi ce volume ZFS ayant le même nom de pool et de volume, on pourra profiter de la réplication ZFS entre noeud directement dans l’interface web de proxmox.

zfs create zp0/vz -o canmount=off
zfs set mountpoint=/vz zp0/vz
zfs inherit -S canmount zp0/vz
zpool export -a
zpool import -N zp0
Définir un quota sur un volume zfs

Pour ne pas saturer votre serveur par une opération de backup journalier ou la purge n’à pas été effectuée, il peut être judicieux de limiter un volume ZFS.

https://docs.oracle.com/cd/E23823_01/html/819-5461/gazvb.html

Par exemple, mon disque fait 450Go, les backups se font par defaut sur /var/lib/vz/dumps, je vais donc limiter le quota de ce volume. Les VMs étant créés sur un autre volume ZFS, le volume VZ, ainsi les backups ne pourrons pas saturer le fonctionnement normale du serveur et de VMs proxmox.

zfs get quota /var/lib/vz
NAME PROPERTY VALUE SOURCE
zp0/zd1 quota 418G local

zfs set quota=250G zp0/zd1

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

Installer et configurer VIM

apt install vim

echo "set term=xterm-256color" >> ~/.vimrc
echo "syntax on" >> ~/.vimrc
echo "export TERM=xterm-256color" >> /etc/profile
Configurer les langues "locales"

apt install locales

dpkg-reconfigure locales

  fr_FR ISO-8859-1 
  fr_FR.UTF-8 UTF-8 

locale-gen
/etc/aliases - e-mail pour root

vi /etc/aliases

  root: mon_email@domaine.fr

Executer la commande suivante pour actualiser aliases.db :

newaliases

Reconfiguer postfix :

dpkg-reconfigure postfix

Ainsi les fichiers suivants ont été configurés :

vi /etc/mailname
vi /etc/postfix/main.cf
monhost.domaine.fr

Puis redémarrer postfix :

systemctl restart postfix

Tester :

echo test | mail -s "test message" root

 

Installer fail2ban

apt install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Installer logwatch

apt install logwatch

Tout énnement sont inscrits dans les logs et logwatch permet de faire un rapport régulier des évennements importants dans ses journaux de log.

Certificat SSL gratuit avec certbot

Installer Let’s encrypt – certbot

https://eff-certbot.readthedocs.io/en/stable/using.html

apt update
apt install certbot python3-certbot-nginx

Ouvrir le firexwall OVH sur les ports 80 et 443

certbot run –key-type ecdsa –cert-name mondomaine.fr -d www.mondomaine.fr
certbot certonly –key-type ecdsa –cert-name mondomaine.fr -d www.mondomaine.fr

 

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 l’accès https sur le port 8006 exclusivement pour 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.

Configuration réseau : /etc/network/interface - bridge vmbr0

# Définition des interfaces locales / loopback :

auto lo
iface lo inet loopback
iface lo inet6 loopback

# Définition des interfaces physique

iface eno1 inet manual
iface eno2 inet manual

# Définir l’adresse IP V4 et V6
# sur une interface bridge (plutôt que sur l’interface physique)

Cette configuration va définir les adresses IP de manière statique sur une interface bridge (vmbr0). Le fait de définir l’adresse IP sur une interface bridge et non pas sur l’interface physique va permettre de partager ce bridge, et donc l’ip publique avec d’autres interfaces bridge au travers de la translation d’adresse (NAT / SNAT).

auto vmbr0
#iface vmbr0 inet dhcp

iface vmbr0 inet static
  address 46.105.104.97/24
  gateway 46.105.104.254
  bridge-ports eno1
  bridge-stp off
  bridge-fd 0
iface vmbr0 inet6 static
  address 2001:41d0:2:d761::1/64
  gateway 2001:41d0:2:d7FF:FF:FF:FF:FF
cmd réseau

Voici quelques commandes pour vérifier la configuration réseau et comprendre les interfaces créé avec proxmox.

Voir aussi : Introduction to Linux interfaces for virtual networking

 brctl show

Lister les interfaces bridge :

bridge name bridge id STP enabled interfaces
vmbr0 8000.0cc47aa91eb2 no eno1
vmbr192 8000.72f430766b48 no veth601i0

 bridge link

Lister les liens entre interface(s) physique et interface(s) bridge :

2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr0 state forwarding priority 32 cost 4 
8: veth601i0@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr192 state forwarding priority 32 cost 2

VETH601i0 correspond à une interface Ethernet virtuelle d’une machine virtuelle (VM)en cours d’exécution.
Si l’on active le firewall sur l’interface réseau de cette machine virtuelle (VM) on verra apparaître 1 nouvlle interface bridge (fwbr601i0) liés entre eux par les liens fwpr et fwln pour effectuer les filtres du firewall aveavec iptables :

veth601i0 <= veth601i0@eno1 => fwbr601i0 <= fwpr601p0@fwln601i0 => vmbr192
                                            fwln601i0@fwpr601p0
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr0 state forwarding priority 32 cost 4 
12: veth601i0@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master fwbr601i0 state forwarding priority 32 cost 2 
14: fwpr601p0@fwln601i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr192 state forwarding priority 32 cost 2 
15: fwln601i0@fwpr601p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master fwbr601i0 state forwarding priority 32 cost 2

ip r

Lister les réseaux par interface et lur passerelle.

 

Sous réseau pour les VM sur un bridge + SNAT

Les VM vont pouvoir communiquer entre être au travers d’un sous réseau local. Pour ce sous réseau, sur le serveur hôte on va donc créer une nouvelle interface bridge, indépeandante (non liée à une interface physque : bridge-ports none) :

auto vmbr192
iface vmbr192 inet static
  address 192.168.1.254/24
  bridge-ports none
  bridge-stp off
  bridge-fd 0

Pour permettre à ces VM d’accéder à Internet, on va utiliser le SNAT (Source NAT – ip_forward – la translation d’adresse). C’est à dire que le va retransmettre les paquets TCP/IP issus d’une VM (réseau 192.168.1.0/24) pour passer par l’IP publique du serveur hote (46.105.104.97) et donc via l’interfacde physique (en1). Pour cela l’on va utiliser les règles IPTABLE suivantes :

post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '192.168.1.0/24' -o eno1 -j SNAT --to-source 46.105.104.97
post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o eno1 -j SNAT --to-source 46.105.104.97

post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1

Ainsi, dans une VM vous pourrez allors accéder à Internet, par exemple pour effectuer les mises à jour.

apt update;
apt upgrade;

 

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.

Un cluster proxmox

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.

Créer le cluster sur un 1er serveur
Rejoindre un cluster

https://pve.proxmox.com/wiki/Cluster_Manager

DNS ou Hosts name

Définir chaque host / ip dans votre serveur DNS.

Dans le cas d’un cluster sur un réseau local, sans serveur DNS, ou d’un cluser dans un VPN privé,  vous pouvez pour chaque noeud du cluster définir son non dans le fichier Hosts de cahque serveur :

vi /etc/hosts

10.0.40.1 serveur1
10.0.40.2 serveur2
...

Auttoriser l’accés SSH par mot de passe pour root

Sur l’un des serveurs du cluster, autoriser (temporairement) l’accès root par mot de passe :

vi /etc/ssh/sshd_config

  PermitRootLogin yes
  #PermitRootLogin prohibit-password
  PasswordAuthentication yes
  #PasswordAuthentication no

systemctl restart sshd

Enregistrer le clef ssh publique du host destinataire avant d’ajouter le noeud au cluster. Pour cela, à partir du serveur que l’on veut inscrire dans le cluster, effectuer une 1ere connexion ssh :

root@serveur2:~# ssh root@serveur1
The authenticity of host 'serveur1 (10.0.60.1)' can't be established.
ECDSA key fingerprint is SHA256:O9ip0vGacWhaoiXeNyx3Qf57hjPZ4h1goZcYfksP/mT.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'serveur1,10.0.60.1' (ECDSA) to the list of known hosts.
Connection closed by 10.0.60.1 port 22

Ajouter un serveur au cluster

pvecm add <IP of master> -link0 <your IPv4> -link1

 <Your IPv6>

pvecm add serveur1 -link0 10.0.40.2