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/
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 :
newaliasesReconfiguer 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