fr:rapports:2022:05-07
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | fr:rapports:2022:05-07 [2022/07/26 14:47] (Version actuelle) – créée tharyrok | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | # 2022/05/07 (Neutriton) : Atelier Proxmox | ||
+ | * [Réunion précédente](https:// | ||
+ | * [Pad de la réunion](https:// | ||
+ | |||
+ | Présences : | ||
+ | |||
+ | - Tharyrok | ||
+ | - Ptr | ||
+ | - HgO | ||
+ | - Célo | ||
+ | - wget | ||
+ | |||
+ | ## Météo | ||
+ | |||
+ | //Moment informel durant lequel on exprime **en peu de mots** comment on se sent et si on a une attente forte pour la réunion.// | ||
+ | //**Ce n'est pas un moment de discussion mais d' | ||
+ | |||
+ | |||
+ | ### Attente(s) forte(s) | ||
+ | |||
+ | //Si l'une ou l' | ||
+ | |||
+ | - Avoir son proxmox fonctionnel à la fin de la journée. Cluster est en bonus. | ||
+ | - Que personne ne s' | ||
+ | - S' | ||
+ | |||
+ | ## Atelier | ||
+ | |||
+ | Proposition d' | ||
+ | |||
+ | Par exemple, est-ce qu'on commence sur une iso, ou un truc déjà préparer. | ||
+ | |||
+ | Actuellement, | ||
+ | |||
+ | Tharyrok va nous donner une plage IP, pour qu'on puisse bronzer. | ||
+ | |||
+ | D' | ||
+ | |||
+ | Mettre une première VM et puis on verra où est-ce qu'on en sera pour la mise en cluster. | ||
+ | |||
+ | On mangera aussi ! Et on dira gère. | ||
+ | |||
+ | Sieste ! Recherche ! Développement ! | ||
+ | |||
+ | * dispo pour le workshop : 4 ordis / tous avec 2 interfaces reseau + au moins deux disques * | ||
+ | |||
+ | ### Creation preseed/ | ||
+ | |||
+ | Qu' | ||
+ | |||
+ | Cela permet de faire certains choix en amont et on doit renseigner moins d' | ||
+ | |||
+ | Exemple de ce qu'on utilise dans Neutrinet : https:// | ||
+ | |||
+ | Pour CentOS goût menthe c'est pas preseed, mais kickstart. Sinon le principe est le même. | ||
+ | |||
+ | Le soucis c'est qu'il faut faire une install complet pour s' | ||
+ | |||
+ | On peut lui dire de démarrer une VM qemu, et puis lui demander de simuler la frappe sur le clavier. | ||
+ | |||
+ | Dans le fichier [source](https:// | ||
+ | |||
+ | Dans le fichier [build-debian-11](https:// | ||
+ | |||
+ | Autre exemple : Packer s' | ||
+ | |||
+ | Lorsque la VM est créée on peut lancer des scripts. Pour Neutrinet, on utilise un playbook ansible. | ||
+ | |||
+ | Dans le dossier http, on retrouve le [preseed pour debian 11](https:// | ||
+ | |||
+ | A la fin, on peut lancer une commande. Mais les late-commandes de Debian ne foncitonnent pas toujours très bien donc mieux vaut se contenter du minimum, puis provisionner avec ansible (sachant que packer permet de lancer un playbook ansible à la fin de toute façon). Ici, on utilise le late-command pour permettre de se connecter en ssh via root avec un mot de passe (nécessaire pour exécuter le playbook ansible) | ||
+ | |||
+ | Maintenant, soit on crée une iso en injectant le preseed dans l' | ||
+ | |||
+ | Kexec est un outil qui s' | ||
+ | |||
+ | Ca fait la même chose qu'un redémarrage mais sans redémarrage :p | ||
+ | |||
+ | Cela permet de lancer le serveur SSH sans devoir passer par le bios. En gros, on donne une IP, on lance le serveur SSH, et hop on passe sur ce nouveau kernel. Ensuite on continue l' | ||
+ | |||
+ | Cela peut être utilse quand on a qu'un accès SSH, qu'on a pas accès pour utiliser un ISO, ou si une installation ne nous convient pas. | ||
+ | |||
+ | On ne devra pas installer packer, cest un outil qui permet de vérifier plus rapidement ses pressed (sans tester une install à chaque fois). | ||
+ | |||
+ | ### Installation Debian minimal | ||
+ | |||
+ | Cela correspond à l' | ||
+ | |||
+ | Contrairement à la net install où on a déjà les modules de l' | ||
+ | |||
+ | C'est pour cette raison que la config réseau se fait au tout début de l' | ||
+ | |||
+ | Lien vers le mini iso : https:// | ||
+ | |||
+ | L' | ||
+ | |||
+ | Après, c'est très simple de re-générer une image avec les bons modules. | ||
+ | |||
+ | La Grande Référence : https:// | ||
+ | |||
+ | ``` | ||
+ | sudo -sE # Garde le shell de l' | ||
+ | mkdir / | ||
+ | 7z x -o/ | ||
+ | cd / | ||
+ | ``` | ||
+ | |||
+ | Il y a deux fichiers importants: | ||
+ | ``` | ||
+ | -rw------- | ||
+ | -rw------- | ||
+ | ``` | ||
+ | linux = le kernel | ||
+ | initrd = installateur de debian | ||
+ | |||
+ | On télécharge le preseed, on décompresse initrd (installateur), | ||
+ | ``` | ||
+ | wget https:// | ||
+ | gzip -d initrd.gz | ||
+ | echo preseed.cfg | cpio -H newc -o -A -F initrd | ||
+ | gzip -9 initrd | ||
+ | ``` | ||
+ | |||
+ | Add non-free firmware binary blobs if needed | ||
+ | (cdimages.debian.org est down juste la maintenant...) | ||
+ | |||
+ | Quand il n'est pas down: | ||
+ | https:// | ||
+ | |||
+ | ``` | ||
+ | wget https:// | ||
+ | |||
+ | mv initrd.gz initrd.gz.orig | ||
+ | cat initrd.gz.orig firmware.cpio.gz > initrd.gz | ||
+ | rm initrd.gz.orig firmware.cpio.gz | ||
+ | ``` | ||
+ | |||
+ | Ensuite on installe les paquets isolinux / syslinux / xorriso (selon les distributions) et puis on fait la commande barbare ci-dessous. | ||
+ | |||
+ | La grande difficulté est de faire une iso qui soit compatible BIOS et UEFI. Il faut trouver la bonne ligne de commande... | ||
+ | |||
+ | En fonction des distributions, | ||
+ | - OpenSUSE : / | ||
+ | - Archlinux : / | ||
+ | - debian : / | ||
+ | |||
+ | Pour le trouver, on peut faire: | ||
+ | ``` | ||
+ | find /usr -name " | ||
+ | ``` | ||
+ | |||
+ | ``` | ||
+ | xorriso -as mkisofs \ | ||
+ | -r -V ' | ||
+ | -o / | ||
+ | -J -J -joliet-long -cache-inodes \ | ||
+ | | ||
+ | -b isolinux.bin \ | ||
+ | -c boot.cat \ | ||
+ | | ||
+ | | ||
+ | -e boot/ | ||
+ | | ||
+ | / | ||
+ | ``` | ||
+ | |||
+ | Ensuite on peut créer une VM dans Virtualbox pour tester cette nouvelle iso. | ||
+ | |||
+ | Bon ici les repos debian sont cassés, donc on va devoir trouver un mirroir. | ||
+ | |||
+ | https:// | ||
+ | |||
+ | On a plusieurs choix pour l' | ||
+ | - kexec | ||
+ | - ssh et full install | ||
+ | - automatiser l' | ||
+ | - preseed (hgo, celo) | ||
+ | - standard | ||
+ | |||
+ | NB : par rapport au pressed de ketupa, on a enlevé la rubrique partitionnement pour l' | ||
+ | d-i mirror/ | ||
+ | |||
+ | #### Kexec | ||
+ | https:// | ||
+ | linux et initrd.gz | ||
+ | wget https:// | ||
+ | |||
+ | ``` | ||
+ | d-i netcfg/ | ||
+ | d-i netcfg/ | ||
+ | d-i netcfg/ | ||
+ | d-i netcfg/ | ||
+ | d-i netcfg/ | ||
+ | d-i netcfg/ | ||
+ | d-i netcfg/ | ||
+ | ``` | ||
+ | ``` | ||
+ | kexec --command-line=" | ||
+ | ``` | ||
+ | https:// | ||
+ | |||
+ | |||
+ | ### IP des gens | ||
+ | |||
+ | 172.16.3.201/ | ||
+ | 172.16.3.202/ | ||
+ | 172.16.3.203/ | ||
+ | 172.16.3.204/ | ||
+ | |||
+ | 172.16.3.254/ | ||
+ | |||
+ | Une fois debian installé, on va modifier / | ||
+ | |||
+ | On modifie ensuite / | ||
+ | |||
+ | ``` | ||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | address fdf7: | ||
+ | ``` | ||
+ | |||
+ | En faisant ça, on va router les IPs qu'on vient de s' | ||
+ | |||
+ | C'est ce qui nous a permis chez Neutrinet de créer un nouveau réseau pour CEPH facilement. | ||
+ | |||
+ | Un autre avantage est aussi si on relie des serveurs, on doit en principe passer pour du broadcast, ici, en mode routage, on envoie uniquement l' | ||
+ | |||
+ | Pour installer ifupdown2 il faut avoir toutes les intefaces en mode auto et pas hotplug dans le / | ||
+ | ``` | ||
+ | apt install ifupdown2 && ifreload -a | ||
+ | ``` | ||
+ | |||
+ | Ne pas oublier de faire le reload des interfaces... sinon ça s' | ||
+ | |||
+ | |||
+ | |||
+ | ### Installation proxmox | ||
+ | https:// | ||
+ | |||
+ | On doit installer wget et ca-certificates qui ne sont pas présent après l' | ||
+ | |||
+ | Pourquoi installe-t-on depuis Debian ? | ||
+ | |||
+ | L'ISO de proxmox force un certain partionnement avec LVM. Avec Debian, on peut faire un partitionnement spécifique. | ||
+ | |||
+ | On va ajouter la configuration du switch virtuel dans / | ||
+ | |||
+ | ``` | ||
+ | auto XXXXX | ||
+ | iface XXXXX inet static | ||
+ | |||
+ | auto vmbr0 | ||
+ | iface vmbr0 inet6 auto | ||
+ | iface vmbr0 inet static | ||
+ | address 172.16.3.20X/ | ||
+ | gateway 172.16.3.254 | ||
+ | bridge-ports XXXXXX | ||
+ | bridge-stp off | ||
+ | bridge-fd 0 | ||
+ | ``` | ||
+ | |||
+ | On ajoute ensuite l' | ||
+ | |||
+ | ### Installation pfsense | ||
+ | |||
+ | ### Premiere VM | ||
+ | |||
+ | #### System | ||
+ | |||
+ | - VirtIO SCSI est par défaut, mais pour des raisons de performance IO on met VirtIO SCSI single | ||
+ | - TPM : intéressant pour du chiffrement | ||
+ | |||
+ | #### Disk | ||
+ | |||
+ | - Cocher la case cache discard pour réduire la taille du disque à la taille réellement utilisée | ||
+ | - Cache : write back pour augmenter la vitesse d' | ||
+ | |||
+ | #### CPU | ||
+ | |||
+ | - Type: host, pour être au plus proche de l' | ||
+ | - Le seul inconvénient est qu'on risque d' | ||
+ | |||
+ | |||
+ | #### Memory | ||
+ | |||
+ | Ràs | ||
+ | |||
+ | #### Network | ||
+ | |||
+ | - Choisir vmbr0 | ||
+ | - Décocher la case firewall. Par défaut proxmox utilise iptables | ||
+ | |||
+ | #### Options | ||
+ | |||
+ | - Start at boot coché | ||
+ | - Use tablet for pointer décoché | ||
+ | - QEMU guest agent: double cliquer, puis cocher les deux options pour déclencher le fstrim lors d'une migration | ||
+ | |||
+ | #### Hardware | ||
+ | |||
+ | - On peut rajouter un câble série si on veut. Ainsi on peut accéder à la console en mode texte, avec le petit menu « xterm.js » dans console. Ca permet de faire des copier/ | ||
+ | - https:// | ||
+ | |||
+ | ### Mise en cluster | ||
+ | |||
+ | On a ajouté une seconde interface à nos serveur (branchement d'un second câble à notre seconde interface, connectée à un switch). | ||
+ | |||
+ | On doit vérifier qu'on a le `auto < | ||
+ | |||
+ | On ajoute dans le fichier / | ||
+ | ``` | ||
+ | |||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | address fdf7: | ||
+ | post-up ip route add fdf7: | ||
+ | post-up ip route add fdf7: | ||
+ | post-up ip route add fdf7: | ||
+ | post-up ip route add fdf7: | ||
+ | pre-down ip route add fdf7: | ||
+ | pre-down ip route add fdf7: | ||
+ | pre-down ip route add fdf7: | ||
+ | pre-down ip route add fdf7: | ||
+ | |||
+ | auto XXXXX | ||
+ | iface XXXX inet manual | ||
+ | |||
+ | ``` | ||
+ | |||
+ | On est allé chercher les adresses fe80::... qui sont sur nos nouvelles interfaces réseau sur chacun des serveurs en faisant un ip a. | ||
+ | |||
+ | On retire la ligne qui correspond à notre IP, parce qu'on va passer par l' | ||
+ | |||
+ | Puis ifreload -a | ||
+ | |||
+ | Quand on fait un `ip -6 r s` on doit voir par exemple: | ||
+ | ``` | ||
+ | ... | ||
+ | fdf7: | ||
+ | fdf7: | ||
+ | fdf7: | ||
+ | fdf7: | ||
+ | ``` | ||
+ | |||
+ | Et on vérifie avec un ping sur chacun des proxmox-0x | ||
+ | |||
+ | Quand tout est ok et que tout le monde parvient à communiquer, | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Pour initier le cluster, une personne utilise cette commande : | ||
+ | |||
+ | ``` | ||
+ | pvecm create {name_cluster} | ||
+ | ``` | ||
+ | |||
+ | Ensuite les autres personnes doivent s' | ||
+ | |||
+ | Pour pouvoir rejoindre le cluster, les machines virtuelles des proxmox qui rejoignent le cluster doivent être éteintes. | ||
+ | |||
+ | ``` | ||
+ | pvecm add proxmox-01 -force | ||
+ | ``` | ||
+ | |||
+ | Oups, les personnes qui ont rejoint le cluster ont perdu leurs VM... Donc en prod, on commence en principe toujours par faire le cluster avant de mettre des machines. | ||
+ | |||
+ | Sabotage du cluster brocoli. | ||
+ | |||
+ | Ici, pour récupérer des VM, on va copier la config dans / | ||
+ | |||
+ | cp proxmox-01/ | ||
+ | |||
+ | On peut changer les détails (noms de machine, identifiants, | ||
+ | |||
+ | Puis changer les interfaces. | ||
+ | |||
+ | Pour éviter ça, il faudrait copier tout ce qu'il ya dans / | ||
+ | |||
+ | Sinon, le mieux, si on peut se permettre d' | ||
+ | |||
+ | Mais il faut aussi que les ID des machines soient différents et que le stockage de backup ait un même nom. | ||
+ | |||
+ | ### Installation ceph | ||
+ | |||
+ | Actuellement, | ||
+ | |||
+ | Une première chose à faire est de wiper le disque ou va être installé CEPH : | ||
+ | ``` | ||
+ | lsblk -fs | ||
+ | wipefs -a /dev/XXXXX | ||
+ | ``` | ||
+ | |||
+ | Puis on installe CEPH. | ||
+ | https:// | ||
+ | |||
+ | On peut d' | ||
+ | |||
+ | ``` | ||
+ | rm / | ||
+ | pveceph install | ||
+ | |||
+ | |||
+ | ``` | ||
+ | |||
+ | On initialise le cluster ceph sur une (!) des machines dans le cluster | ||
+ | ``` | ||
+ | pveceph init --network fdf7: | ||
+ | ``` | ||
+ | |||
+ | sur chacune des machines proxmox dans le cluster | ||
+ | ``` | ||
+ | pveceph mon create | ||
+ | ``` | ||
+ | |||
+ | ``` | ||
+ | pveceph mgr create | ||
+ | ``` | ||
+ | |||
+ | On rajoute les OSD, une unité de stockage dans CEPH. | ||
+ | |||
+ | ``` | ||
+ | pveceph osd create /dev/sdX | ||
+ | ``` | ||
+ | |||
+ | Il faut que les horloges soient toutes à l' | ||
+ | ``` | ||
+ | apt install systemd-timesyncd | ||
+ | ``` | ||
+ | Pourquoi pas ntpd ? Parce que systemd-timesyncd est juste un client, il n'y a pas la partie serveur. | ||
+ | |||
+ | |||
+ | de nouveau sur une seule des hosts dans le cluster : | ||
+ | |||
+ | ``` | ||
+ | pveceph pool create XXXXX --add_storages | ||
+ | ``` | ||
+ | |||
+ | Avec cette commande pool, CEPH réorganise le stockage en fonction des unités OSD crées plus haut. | ||
+ | |||
+ | On a un warning qui dit que proxmox a fait des placements de groupes / produits trop grand (128 alors que CEPH les préfère en 32): | ||
+ | ``` | ||
+ | 1 pools have too many placement groups | ||
+ | |||
+ | Pool padata has 128 placement groups, should have 32 | ||
+ | ``` | ||
+ | Les placement de groupes sont des sous-blocs qui permettrent de régir le fait qu'on duplique une donnée ou non, qu'on change une donnée ou pas. C'est une algorithme qui gère dans quel node vont se retrouver les données. Il y a une formule pour calculer ce chiffre, mais ici OSEF (Ô CEPH, aide-nous). | ||
+ | |||
+ | Il y a une petite commande qui permet de passer en mode automatique: | ||
+ | ``` | ||
+ | ceph osd pool set XXXXX pg_autoscale_mode on | ||
+ | ``` | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Et maintenant, on va déplacer une VM pendant qu' | ||
+ | - Dans la partie hardware de la VM, on clique sur le disk, puis en haut dans le menu "disk actions" | ||
+ | |||
+ | ## Prochaine réunion | ||
+ | |||
+ | Prochain Neutriton (config keycloak) : 11/06, à confirmer lors de la réunion hub-infra | ||
+ | |||
+ | Prochaine réunion hub-infra : 29/05 à 14h, Caldarium / Jitsi | ||
+ | |||
+ | :warning: Relire les notes du PV de la dernière réunion hub-infra et décider de la méthode de chiffrement | ||
+ | |||
+ | ## Météo de fin | ||
+ | |||
+ | //Moment informel durant lequel on exprime **en peu de mots** comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif.// | ||
+ | //Si une ou plusieurs **tension est née** durant la réunion, il est peut-être nécessaire d' | ||
+ | |||
+ | {{tag> |
fr/rapports/2022/05-07.txt · Dernière modification : 2022/07/26 14:47 de tharyrok