stackhpc.beegfs

Statut de Construction

stackhpc.beegfs

Ce rôle Ansible peut être utilisé pour créer et détruire un cluster BeegFS. En résumé, BeegFS est un système de fichiers parallèle qui répartit les données des utilisateurs sur plusieurs serveurs. Il est conçu pour être évolutif en termes de performances et de capacité. Pour en savoir plus sur BeegFS, cliquez ici.

Le rôle a été testé pour la dernière fois avec la version 2.5.0 d'Ansible.

Exemple

Supposons que nous avons un inventaire qui ressemble à ceci (inventory-beegfs):

[leader]
bgfs1 ansible_host=172.16.1.1 ansible_user=centos

[follower]
bgfs2 ansible_host=172.16.1.2 ansible_user=centos

[cluster:children]
leader
follower

[cluster_beegfs_mgmt:children]
leader

[cluster_beegfs_mds:children]
leader

[cluster_beegfs_oss:children]
leader
follower

[cluster_beegfs_client:children]
leader
follower

Et un playbook correspondant comme ceci (beegfs.yml):

---
- hosts:
  - cluster_beegfs_mgmt
  - cluster_beegfs_mds
  - cluster_beegfs_oss
  - cluster_beegfs_client 
  roles:
  - role: stackhpc.beegfs
    beegfs_enable:
      admon: false
      mgmt: "{{ inventory_hostname in groups['cluster_beegfs_mgmt'] }}"
      meta: "{{ inventory_hostname in groups['cluster_beegfs_mds'] }}"
      oss: "{{ inventory_hostname in groups['cluster_beegfs_oss'] }}"
      tuning: "{{ inventory_hostname in groups['cluster_beegfs_oss'] }}"
      client: "{{ inventory_hostname in groups['cluster_beegfs_client'] }}"
    beegfs_oss:
    - dev: "/dev/sdb"
      port: 8003
    - dev: "/dev/sdc"
      port: 8103
    - dev: "/dev/sdd"
      port: 8203
    beegfs_mgmt_host: "{{ groups['cluster_beegfs_mgmt'] | first }}"
    beegfs_client:
    - path: "/mnt/beegfs"
      port: 8004
    beegfs_fstype: "xfs"
    beegfs_force_format: false
    beegfs_interfaces: ["ib0"]
    beegfs_rdma: true
    beegfs_state: present
...

Pour créer un cluster :

# ansible-playbook beegfs.yml -i inventory-beegfs -e beegfs_state=present

Pour détruire un cluster :

# ansible-playbook beegfs.yml -i inventory-beegfs -e beegfs_state=absent

Remarques

Activer divers services BeegFS est aussi simple que de configurer les options sous beegfs_enable à true ou false où :

  • mgmt: Serveur de gestion - au moins un hôte
  • mds: Nœuds de stockage de métadonnées
  • oss: Nœuds de serveur de stockage d'objets
  • client: Clients du cluster de stockage BeeGFS
  • admon: NON MIS EN ŒUVRE

Ce rôle dépend de la résolution du nom d'hôte de chaque nœud à l'adresse IP utilisée pour atteindre le serveur de gestion, tel que configuré via beegfs_host_mgmt. Dans ce cas, bgfs1 et bgfs2 doivent se résoudre respectivement en 172.16.1.1 et 172.16.1.2. Cela peut se faire via DNS ou /etc/hosts.

Il est important de noter que lors de la provision du cluster, si les périphériques de blocs spécifiés ont déjà un système de fichiers spécifié ou si le disque n'est pas vide, il est essentiel de forcer le format du disque. Cela peut être fait en définissant beegfs_force_format à true. CECI SUPPRIMERA LE CONTENU DES DISQUES. Assurez-vous d'avoir fait des sauvegardes si vous vous souciez de leur contenu.

Les partitions sont prises en charge, mais elles doivent déjà avoir été créées par un autre moyen. De plus, vous devrez également remplacer la variable beegfs_oss_tunable par une liste de périphériques de blocs parent, car les partitions ne se trouvent pas sous /sys/block/. Par exemple, pour créer des partitions à l'aide d'un module Ansible appelé parted (fonctionne avec la version 2.5+ d'Ansible), vous pouvez exécuter le playbook suivant :

---
- hosts:
  - cluster_beegfs_oss
  vars:
    partitions:
    - dev: /dev/sdb
      start: 0%
      end: 50%
      number: 1
    - dev: /dev/sdb
      start: 50%
      end: 100%
      number: 2
  tasks:
  - name: Créer des partitions
    parted:
      label: gpt
      state: present
      part_type: primary
      device: "{{ item.dev }}"
      part_start: "{{ item.start }}"
      part_end: "{{ item.end }}"
      number: "{{ item.number }}"
    with_items: "{{ partitions }}"
    become: true
...

Tests

Des tests sont fournis dans le dossier molecule. Pour les exécuter localement, vous avez besoin de :

Une fois que vous avez toutes les dépendances installées, vous pouvez exécuter les tests à partir du dossier racine du rôle :

$> molecule lint
$> molecule test
$> molecule test -s vagrant-ubuntu-16.04
$> molecule test -s vagrant-ubuntu-18.04
  • Le scénario par défaut de molecule testera le rôle sur une machine Centos7.5.
  • Tous les tests déployeront tous les services sur une seule machine.
  • La vérification du format yaml et d'ansible est effectuée
  • L'idempotence est vérifiée
  • Une fois l'exécution terminée, quelques testinfra sont exécutés. Tous les scénarios utilisent les mêmes tests situés dans molecule/tests
À propos du projet

This role provisions an exisiting cluster to support Beegfs management, metadata, object storage server and client roles.

Installer
ansible-galaxy install stackhpc.beegfs
Licence
Unknown
Téléchargements
1.1k
Propriétaire
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.