stackhpc.beegfs

Status budowy

stackhpc.beegfs

Ten rola Ansible może być używana do tworzenia i niszczenia klastra BeegFS. W skrócie, BeegFS to równoległy system plików, który rozkłada dane użytkowników na wiele serwerów. Został zaprojektowany tak, aby był skalowalny zarówno pod względem wydajności, jak i pojemności. Dowiedz się więcej o BeegFS tutaj.

Rola była ostatnio testowana przy użyciu wersji Ansible 2.5.0.

Przykład

Załóżmy, że mamy inwentarz, który wygląda tak (inventory-beegfs):

[lider]
bgfs1 ansible_host=172.16.1.1 ansible_user=centos

[obserwator]
bgfs2 ansible_host=172.16.1.2 ansible_user=centos

[klaster:dzieci]
lider
obserwator

[klaster_beegfs_mgmt:dzieci]
lider

[klaster_beegfs_mds:dzieci]
lider

[klaster_beegfs_oss:dzieci]
lider
obserwator

[klaster_beegfs_client:dzieci]
lider
obserwator

I odpowiadający mu playbook wygląda tak (beegfs.yml):

---
- hosty:
  - klaster_beegfs_mgmt
  - klaster_beegfs_mds
  - klaster_beegfs_oss
  - klaster_beegfs_client 
  role:
  - rola: stackhpc.beegfs
    beegfs_enable:
      admon: false
      mgmt: "{{ inventory_hostname in groups['klaster_beegfs_mgmt'] }}"
      meta: "{{ inventory_hostname in groups['klaster_beegfs_mds'] }}"
      oss: "{{ inventory_hostname in groups['klaster_beegfs_oss'] }}"
      tuning: "{{ inventory_hostname in groups['klaster_beegfs_oss'] }}"
      client: "{{ inventory_hostname in groups['klaster_beegfs_client'] }}"
    beegfs_oss:
    - dev: "/dev/sdb"
      port: 8003
    - dev: "/dev/sdc"
      port: 8103
    - dev: "/dev/sdd"
      port: 8203
    beegfs_mgmt_host: "{{ groups['klaster_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
...

Aby stworzyć klaster:

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

Aby zniszczyć klaster:

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

Notatki

Włączenie różnych usług BeegFS jest tak proste, jak skonfigurowanie przełączników pod beegfs_enable na true lub false, gdzie:

  • mgmt: Serwer zarządzający - minimum jeden host
  • mds: Węzły przechowywania danych metadanych
  • oss: Węzły przechowywania obiektów
  • client: Klienci klastra pamięci masowej BeeGFS
  • admon: NIEZAIMPLEMENTOWANE

Ta rola zależy od tego, czy nazwa hosta każdego węzła rozwiązuje się na adres IP używany do osiągnięcia hosta zarządzającego, co jest skonfigurowane za pomocą beegfs_host_mgmt. W tym przypadku bgsf1 i bgfs2 muszą być rozwiązywane na 172.16.1.1 i 172.16.1.2 odpowiednio. Może to być zrealizowane za pomocą DNS lub /etc/hosts.

Ważne jest, aby zauważyć, że podczas tworzenia klastra, jeśli określone urządzenia blokowe mają już przypisaną przestrzeń dyskową, lub dysk nie jest pusty, ważne jest, aby wymusić formatowanie dysku. Można to ustawić poprzez ustawienie beegfs_force_format na true. TO USUNIE ZAWARTOŚĆ DYSKU(DYSKÓW). Upewnij się, że zrobiono kopie zapasowe, jeśli zależy ci na ich zawartości.

Partycje są obsługiwane, ale muszą już być utworzone przez inne środki. Dodatkowo musisz także nadpisać zmienną beegfs_oss_tunable listą nadrzędnych urządzeń blokowych, ponieważ partycje nie znajdują się w /sys/block/. Na przykład, aby utworzyć partycje przy użyciu modułu Ansible o nazwie parted (działa na wersji Ansible 2.5+), możesz uruchomić następujący playbook:

---
- hosty:
  - klaster_beegfs_oss
  zmienne:
    partycje:
    - dev: /dev/sdb
      start: 0%
      end: 50%
      number: 1
    - dev: /dev/sdb
      start: 50%
      end: 100%
      number: 2
  zadania:
  - nazwa: Utwórz partycje
    parted:
      label: gpt
      stan: present
      part_type: primary
      urządzenie: "{{ item.dev }}"
      part_start: "{{ item.start }}"
      part_end: "{{ item.end }}"
      number: "{{ item.number }}"
    z przedmiotami: "{{ partycje }}"
    become: true
...

Testy

Niektóre testy są dostarczane w folderze molecule. Aby uruchomić je lokalnie, potrzebujesz:

Gdy masz już zainstalowane wszystkie zależności, możesz uruchomić testy z folderu głównego roli:

$> molecule lint
$> molecule test
$> molecule test -s vagrant-ubuntu-16.04
$> molecule test -s vagrant-ubuntu-18.04
  • Domyślny scenariusz moleku testuje rolę w maszynie Centos7.5.
  • Wszystkie testy wdrażają wszystkie usługi na jednej maszynie.
  • Sprawdzane są linting yaml i ansible
  • Sprawdzana jest idempotencja
  • Po zakończeniu wykonywania wykonywane są pewne testy testinfra. Wszystkie scenariusze używają tych samych testów znajdujących się w molecule/tests.
O projekcie

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

Zainstaluj
ansible-galaxy install stackhpc.beegfs
Licencja
Unknown
Pobrania
1.1k
Właściciel
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.