stackhpc.beegfs
stackhpc.beegfs
Este rol de Ansible se puede utilizar para crear y destruir un clúster de BeegFS. En resumen, BeegFS es un sistema de archivos paralelo que distribuye los datos del usuario a través de múltiples servidores. Está diseñado para ser escalable tanto en términos de rendimiento como de capacidad. Aprende más sobre BeeFS aquí.
El rol fue probado por última vez con la versión 2.5.0 de Ansible.
Ejemplo
Digamos que tenemos un inventario que se ve así (inventory-beegfs
):
[líder]
bgfs1 ansible_host=172.16.1.1 ansible_user=centos
[seguidor]
bgfs2 ansible_host=172.16.1.2 ansible_user=centos
[clúster:children]
líder
seguidor
[cluster_beegfs_mgmt:children]
líder
[cluster_beegfs_mds:children]
líder
[cluster_beegfs_oss:children]
líder
seguidor
[cluster_beegfs_client:children]
líder
seguidor
Y un libro de jugadas correspondiente como este (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
...
Para crear un clúster:
# ansible-playbook beegfs.yml -i inventory-beegfs -e beegfs_state=present
Para destruir un clúster:
# ansible-playbook beegfs.yml -i inventory-beegfs -e beegfs_state=absent
Notas
Habilitar varios servicios de BeegFS es tan simple como configurar los interruptores bajo beegfs_enable
a true
o false
, donde:
mgmt
: Servidor de gestión - mínimo un hostmds
: Nodos de almacenamiento de metadatososs
: Nodos de servidor de almacenamiento de objetosclient
: Clientes del clúster de almacenamiento de BeeGFSadmon
: NO IMPLEMENTADO
Este rol depende de que el nombre del host de cada nodo se resuelva a la dirección IP utilizada para alcanzar el host de gestión, según lo configurado a través de beegfs_host_mgmt
. En este caso, bgsf1
y bgfs2
deben resolverse a 172.16.1.1
y 172.16.1.2
, respectivamente. Esto se puede hacer mediante DNS o /etc/hosts
.
Es importante señalar que al aprovisionar el clúster, si los dispositivos de bloques especificados ya tienen un sistema de archivos o el disco no está vacío, es importante forzar el formato del disco. Esto se puede hacer configurando beegfs_force_format
a true
. ESTO ELIMINARÁ EL CONTENIDO DEL (DE LOS) DISCO(S). Asegúrate de haber hecho copias de seguridad si te importa su contenido.
Se admiten particiones, pero deben haberse creado por otros medios. Además, también deberás sobrescribir la variable beegfs_oss_tunable
con una lista de dispositivos de bloque principales, ya que las particiones no viven en /sys/block/
. Por ejemplo, para crear particiones utilizando un módulo de Ansible llamado parted
(funciona en la versión de Ansible 2.5+), puedes ejecutar el siguiente libro de jugadas:
---
- 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: Crear particiones
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
...
Pruebas
Se proporcionan algunas pruebas en la carpeta de moléculas. Para ejecutarlas localmente necesitas:
Una vez que tengas todas las dependencias instaladas, puedes ejecutar las pruebas desde la carpeta raíz del rol:
$> molecule lint
$> molecule test
$> molecule test -s vagrant-ubuntu-16.04
$> molecule test -s vagrant-ubuntu-18.04
- El escenario de moléculas por defecto probará el rol en una máquina CentOS 7.5.
- Todas las pruebas desplegarán todos los servicios en una única máquina.
- Se prueba el lint de yaml y ansible.
- Se verifica la idempotencia.
- Una vez que finaliza la ejecución, se ejecutan algunas pruebas de testinfra. Todos los escenarios utilizan las mismas pruebas ubicadas en molecule/tests.
This role provisions an exisiting cluster to support Beegfs management, metadata, object storage server and client roles.
ansible-galaxy install stackhpc.beegfs