IFB.glusterfs

Rôle GlusterFS

  • Créer un volume LVM thin et un système de fichiers (XFS) sur storage_devices
  • Configurer firewalld pour GlusterFS
  • Installer glusterfs
  • Ne pas gérer le volume Gluster :warning: Étape manuelle :warning:
  • Activer les volumes glusterfs
  • Monter les volumes glusterfs

Installation

  1. Jouer le rôle

  2. Gérer le volume manuellement
    Sur un serveur gluster, connecter les pairs et créer des volumes

# Créer un pool de serveurs de confiance
gluster peer probe 192.168.103.32
gluster peer probe 192.168.103.33
gluster peer probe 192.168.103.34
gluster peer probe 192.168.103.35
gluster peer probe 192.168.103.36
# Volume /scratch (distribué)
gluster volume create scratch \
192.168.103.32:/bricks/scratch/brick1/brick \
192.168.103.33:/bricks/scratch/brick1/brick \
192.168.103.34:/bricks/scratch/brick1/brick \
192.168.103.35:/bricks/scratch/brick1/brick \
192.168.103.36:/bricks/scratch/brick1/brick
# Volume /data (répliqué-distribué 2 réplicas + arbitre)
gluster volume create data replica 3 arbiter 1 \
192.168.103.32:/bricks/data/brick1/brick 192.168.103.33:/bricks/data/brick2/brick 192.168.103.34:/bricks/data/arbiter/brick \
192.168.103.33:/bricks/data/brick1/brick 192.168.103.34:/bricks/data/brick2/brick 192.168.103.35:/bricks/data/arbiter/brick \
192.168.103.34:/bricks/data/brick1/brick 192.168.103.35:/bricks/data/brick2/brick 192.168.103.36:/bricks/data/arbiter/brick \
192.168.103.35:/bricks/data/brick1/brick 192.168.103.36:/bricks/data/brick2/brick 192.168.103.32:/bricks/data/arbiter/brick \
192.168.103.36:/bricks/data/brick1/brick 192.168.103.32:/bricks/data/brick2/brick 192.168.103.33:/bricks/data/arbiter/brick
  1. Jouer le rôle à nouveau

Sources

Largement inspiré de:

Variables du rôle

  • glusterfs_version = Version de GlusterFS à installer en utilisant les packages CentOS Storage SIG. La valeur par défaut est la version "4.1".
  • glusterfs_vg = Liste des VG : vgname, storage_devices (Liste de dispositifs séparés par des virgules)
  • glusterfs_thinpool = Liste des thinpool : vgname, poolname, poolsize (éviter les valeurs flottantes)
  • glusterfs_lv = Liste des volumes logiques LVM thin : lvname, vgname, poolname (optionnel), lvsize, mountpath
  • glusterfs_nodes = Liste des nœuds dans le cluster GlusterFS. Par défaut, cette liste est peuplée par le groupe défini dans l'inventaire
  • glusterfs_volumes = Liste des volumes : volume (nom), state, options, mount: serveur, options, chemin,...
  • firewalld_enabled: Configurer le pare-feu
---
# Configurer le pare-feu
firewalld_enabled: true

# Configurer GlusterFS
glusterfs_volumes:
- volume: volume1  # Répliqué
  state: present       
  replica: 3
  mount:
    path: "/mnt/volume1"
        
- volume: volume2  # Distribué sur 2 nœuds
  state: present
  nodes:
    - node2.glusterfs.example
    - node3.glusterfs.example
  options:
    performance.cache-size: 256MB
  mount:
    server: "node2.glusterfs.example"
    options: "defaults,_netdev,backupvolfile-server=node3.glusterfs.example"
    path: "/mnt/volume2"
    owner: exampleuser		# Par défaut : root
    group: examplegroup		# Par défaut : root
    mode: "0770"		# Par défaut : 0755

Options de montage

Voir :

Remarques sur le montage :

  • Le serveur spécifié dans la commande de montage est uniquement utilisé pour récupérer le fichier de configuration gluster décrivant le nom du volume. Par la suite, le client communiquera directement avec les serveurs mentionnés dans le fichier de configuration (qui peuvent même ne pas inclure celui utilisé pour le montage).
  • L'option backupvolfile-server permet de spécifier un autre serveur/volume de sauvegarde.

Exemple complet

---

glusterfs_version: "4.1"

glusterfs_vg:
  - vgname: "vgscratch"
    storage_devices: "/dev/sdb"
  - vgname: "vgdata"
    storage_devices: "/dev/sdc"

glusterfs_thinpool:
   - vgname: "vgdata"
     poolname: "thinpooldata"
     poolsize: "9G"

glusterfs_lv:
  - lvname: "scratch-brick1"
    vgname: "vgscratch"
    lvsize: "9G"
    mountpath: "/bricks/scratch/brick1"
  - lvname: "data-brick1"
    vgname: "vgdata"
    poolname: "thinpooldata"
    lvsize: "4G"
    mountpath: "/bricks/data/brick1"
  - lvname: "data-brick2"
    vgname: "vgdata"
    poolname: "thinpooldata"
    lvsize: "4G"
    mountpath: "/bricks/data/brick2"
  - lvname: "data-arbiter"
    vgname: "vgdata"
    poolname: "thinpooldata"
    lvsize: "1G"
    mountpath: "/bricks/data/arbiter"

glusterfs_volumes:
  # RAID-0 sur ssd, distribué
  - volume: scratch
    state: present
    mount:
      # http://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Clients/#mounting-volumes
      # man mount.glusterfs
      server: "192.168.103.32"
      options: "defaults,_netdev"
      path: "/shared/scratch"

  # RAID-6 sur disques SAS, répliqué-distribué (2 réplicas + arbitre)
  - volume: data
    state: present
    mount:
      # http://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Clients/#mounting-volumes
      # man mount.glusterfs
      server: "192.168.103.32"
      options: "defaults,_netdev"
      path: "/shared/data"
À propos du projet

Ansible role to install and configure GlusterFS

Installer
ansible-galaxy install IFB.glusterfs
Licence
gpl-2.0
Téléchargements
9.3k
Propriétaire
National Infrastructure of Bioinformatics, and French node of the ELIXIR ESFRI