stackhpc.beegfs
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ôtemds
: Nœuds de stockage de métadonnéesoss
: Nœuds de serveur de stockage d'objetsclient
: Clients du cluster de stockage BeeGFSadmon
: 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
This role provisions an exisiting cluster to support Beegfs management, metadata, object storage server and client roles.
ansible-galaxy install stackhpc.beegfs