stackhpc.beegfs
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 hostmds
: Węzły przechowywania danych metadanychoss
: Węzły przechowywania obiektówclient
: Klienci klastra pamięci masowej BeeGFSadmon
: 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.
This role provisions an exisiting cluster to support Beegfs management, metadata, object storage server and client roles.
ansible-galaxy install stackhpc.beegfs