Lors du choix d'une solution HA, vous devrez décider du niveau d'indisponibilité (si aucun) acceptable. Cela affectera la complexité de votre configuration.
Je pense que vous avez deux options sans acheter de matériel supplémentaire (avec d'autres permutations) :
- "Toujours actif" - DRBD en mode Primaire-Primaire
- 5 à 15 minutes d'arrêt - DRBD en mode Primaire-Esclave
Pour la configuration la plus haute disponibilité sans stockage partagé, vous devrez utiliser DRBD en mode primaire-primaire. Cela nécessitera un dispositif STONITH pour éliminer un nœud non-répondeur. Les dispositifs de sauvegarde sur batterie basés sur IP peuvent généralement gérer cette fonction efficacement. Pacemaker et corosync peuvent gérer la mise en service des machines virtuelles et la gestion des ressources.
Les avantages sont que vous pouvez effectuer une migration en direct et l'indisponibilité est théoriquement éliminée.
Les inconvénients de cette configuration sont que si un split-brain se produit (ce qui arrivera), il peut être difficile à réparer, car les données peuvent exister sur les deux nœuds.
Alternativement, si vous acceptez quelques minutes d'arrêt, voici ce que nous utilisons :
- DRBD en mode Primaire-Secondaire
- Une pile de stockage composée de MDADM Raid 1 Array -> LVM -> DRBD -> LVM
- Un script pour mettre en service les ressources en cas d'événement de basculement (administrateur exécute manuellement cela).
Essentiellement, nous avons deux pools LVM de stockage au-dessus de deux tableaux MDADM Raid 1. Ils sont exportés vers DRBD pour effectuer une réplication au niveau du bloc. Ensuite, vous ajoutez LVM au-dessus de DRBD pour permettre des instantanés des machines virtuelles et un accès direct au système de fichiers des machines virtuelles. Pourquoi deux ?
L'idée initiale était de créer une ressource DRBD pour chaque machine virtuelle, de sorte que les machines puissent être déplacées entre les hôtes en fonction de la charge et qu'un hôte ne reste pas inactif. Son administration était difficile, donc deux ressources DRBD de 200 Go chacune étaient un bon compromis. De cette manière, r0 peut être primaire sur node1 et r1 peut être primaire sur node2. Si node1 tombe en panne, nous exécutons notre script "make master" sur node2 et il gère les mappages LVM, définissant DRBD comme primaire pour ces ressources et indiquant à virsh de démarrer toutes les machines. Sur un tableau SSD, je peux arrêter une douzaine de machines virtuelles et les démarrer sur node2 en environ 2-3 minutes.