stackhpc.openhpc
stackhpc.openhpc
Ten skrypt Ansible instaluje pakiety i dokonuje konfiguracji, aby zapewnić klaster Slurm w wersji OpenHPC v2.x.
Jako skrypt, musi być używany w playbooku – poniżej znajduje się prosty przykład. Takie podejście sprawia, że jest całkowicie modułowe, bez założeń co do dostępnych sieci czy funkcji klastra, z wyjątkiem kilku konwencji dotyczących nazw hostów. Dowolny pożądany system plików klastra lub inna wymagania mogą być swobodnie integrowane z dodatkowych ról Ansible lub innymi rozwiązaniami.
Minimalny obraz dla węzłów to obraz RockyLinux 8 GenericCloud.
Zmienne roli
openhpc_extra_repos
: Opcjonalna lista. Dodatkowe definicje repozytoriów Yum do skonfigurowania, zgodnie z formatem modułu Ansible
yum_repository. Kluczowe elementy dla każdego elementu listy:
name
: Wymaganedescription
: Opcjonalnefile
: Wymaganebaseurl
: Opcjonalnemetalink
: Opcjonalnemirrorlist
: Opcjonalnegpgcheck
: Opcjonalnegpgkey
: Opcjonalne
openhpc_slurm_service_enabled
: boolean, czy włączyć odpowiednią usługę Slurm (slurmd/slurmctld).
openhpc_slurm_service_started
: Opcjonalny boolean. Czy uruchomić usługi Slurm. Jeśli ustawione na false, wszystkie usługi zostaną zatrzymane. Domyślnie jest to openhpc_slurm_service_enabled
.
openhpc_slurm_control_host
: Wymagana zmienna tekstowa. Nazwa hosta w inwentarzu Ansible (i krótka nazwa hosta) kontrolera, np. "{{ groups['cluster_control'] | first }}"
.
openhpc_slurm_control_host_address
: Opcjonalna zmienna tekstowa. Adres IP lub nazwa do użycia dla openhpc_slurm_control_host
, np. aby użyć innego interfejsu niż ten, który jest rozwiązywany z openhpc_slurm_control_host
.
openhpc_packages
: dodatkowe pakiety OpenHPC do zainstalowania.
openhpc_enable
:
control
: czy włączyć hosta kontrolnegodatabase
: czy włączyć slurmdbdbatch
: czy włączyć węzły obliczenioweruntime
: czy włączyć środowisko uruchomieniowe OpenHPC
openhpc_slurmdbd_host
: Opcjonalne. Gdzie wdrożyć slurmdbd, jeśli używasz tej roli do wdrożenia slurmdbd, w przeciwnym razie, gdzie działa istniejący slurmdbd. Powinno to być nazwą hosta w twoim inwentarzu. Ustaw to na none
, aby uniemożliwić roli zarządzanie slurmdbd. Domyślnie jest to openhpc_slurm_control_host
.
openhpc_slurm_configless
: Opcjonalne, domyślnie false. Jeśli true, używany jest tryb "configless" Slurm.
openhpc_munge_key
: Opcjonalne. Zdefiniuj klucz munge do użycia. Jeśli nie podano, jeden zostanie wygenerowany, ale openhpc_slurm_control_host
musi być w grze.
openhpc_login_only_nodes
: Opcjonalne. Jeśli używasz trybu "configless", określ nazwę grupy ansible, zawierającej węzły, które są tylko do logowania (tj. nie są także węzłami kontrolnymi), jeśli to konieczne. Te węzły będą uruchamiać slurmd
w celu skontaktowania się z hostem kontrolnym w celu uzyskania konfiguracji.
openhpc_module_system_install
: Opcjonalne, domyślnie true. Czy instalować system modułów środowiskowych. Jeśli true, zostanie zainstalowane lmod. Jeśli false, możesz dostarczyć własny system modułów lub zrezygnować z jego użycia.
slurm.conf
openhpc_slurm_partitions
: Opcjonalne. Lista jednej lub więcej partycji slurm, domyślnie []
. Każda partycja może zawierać następujące wartości:
groups
: Jeśli istnieje wiele grup węzłów, które tworzą partycję, można zdefiniować tutaj listę obiektów grup. W przeciwnym razie,groups
można pominąć, a następujące atrybuty można zdefiniować w obiekcie partycji:name
: Nazwa węzłów w tej grupie.cluster_name
: Opcjonalne. Override dla definicji na najwyższym poziomieopenhpc_cluster_name
.extra_nodes
: Opcjonalne. Lista dodatkowych definicji węzłów, np. dla węzłów w tej grupie/partycji, niekontrolowanych przez tę rolę. Każdy element powinien być słownikiem, z kluczami/wartościami zgodnie z dokumentacją "KONFIGURACJA WĘZŁA" dla slurm.conf. Zauważ, że kluczNodeName
musi być pierwszy.ram_mb
: Opcjonalne. Fizyka RAM dostępna w każdym węźle tej grupy (parametr slurm.confRealMemory
) w MiB. Ustalane jest to przy użyciu faktów ansible, jeśli nie zdefiniowane, równoważne zfree --mebi
łączną *openhpc_ram_multiplier
.ram_multiplier
: Opcjonalne. Override dla definicji na najwyższym poziomieopenhpc_ram_multiplier
. Nie ma to wpływu, jeśli jest ustawioneram_mb
.gres
: Opcjonalne. Lista słowników definiujących zalety ogólne. Każdy słownik musi definiować:conf
: Tekst z specyfikacją zasobów, wymagającą formatu<name>:<type>:<number>
, np.gpu:A100:2
. Zauważ, żetype
to dowolny ciąg.file
: Tekst z Plik (ścieżka do urządzenia/urządzeń) dla tego zasobu, np./dev/nvidia[0-1]
dla powyższego przykładu.
Zauważ, że GresTypes muszą być ustawione w
openhpc_config
, jeśli to jest używane.
default
: Opcjonalne. Flaga boolean dla tego, czy ta partycja jest domyślną. Dozwolone ustawienia toYES
iNO
.maxtime
: Opcjonalne. Ograniczenie czasu specyficzne dla partycji, zgodnie z formatem parametru slurm.confMaxTime
. Domyślna wartość to zdefiniowana przezopenhpc_job_maxtime
. Wartość powinna być ujęta w cudzysłów, aby uniknąć konwersji Ansible.partition_params
: Opcjonalne. Mapowanie dodatkowych parametrów i wartości dla konfiguracji partycji.
Dla każdej grupy (jeśli używana) lub partycji, dowolne węzły w grupie inwentarza ansible <cluster_name>_<group_name>
zostaną dodane do grupy/partycji. Zauważ, że:
- Węzły mogą mieć dowolne nazwy hostów, ale powinny być pisane małymi literami, aby uniknąć niezgodności między inwentarzem a rzeczywistą nazwą hosta.
- Węzły w grupie są zakładane jako jednorodne pod względem procesora i pamięci.
- Grupa inwentarza może być pusta lub brakować, ale jeśli nie, to gra musi zawierać przynajmniej jeden węzeł z niej (używane do ustawienia informacji o procesorze).
- Węzły nie mogą pojawić się w więcej niż jednej grupie.
openhpc_job_maxtime
: Maksymalne ograniczenie czasu pracy, domyślnie '60-0'
(60 dni). Zobacz parametry slurm.conf MaxTime
dla formatu. Domyślnie to 60 dni. Wartość powinna być ujęta w cudzysłów, aby uniknąć konwersji Ansible.
openhpc_cluster_name
: nazwa klastra.
openhpc_config
: Opcjonalne. Mapowanie dodatkowych parametrów i wartości dla slurm.conf
. Zauważ, że te nadpiszą wszelkie zawarte w templates/slurm.conf.j2
.
openhpc_ram_multiplier
: Opcjonalne, domyślnie 0.95
. Mnożnik używany w obliczeniach: total_memory * openhpc_ram_multiplier
, przy ustawianiu RealMemory
dla partycji w slurm.conf. Może być nadpisane na poziomie partycji przy użyciu openhpc_slurm_partitions.ram_multiplier
. Nie ma na to wpływu, jeśli openhpc_slurm_partitions.ram_mb
jest ustawione.
openhpc_state_save_location
: Opcjonalne. Absolutna ścieżka do stanu kontrolera Slurm (parametr slurm.conf
StateSaveLocation)
Rachunkowość
Domyślnie, nie jest skonfigurowany żaden system przechowywania rachunkowości. Klastery OpenHPC w wersji 1.x i nieaktualizowane klastery OpenHPC w wersji 2.0 obsługują system przechowywania rachunkowości w formie plików, co można wybrać, ustawiając zmienną roli openhpc_slurm_accounting_storage_type
na accounting_storage/filetxt
1. Rachunkowość dla klastrów OpenHPC w wersji 2.1 i zaktualizowanych klastrów OpenHPC w wersji 2.0 wymaga demona bazy danych Slurm, slurmdbd
(chociaż zakończenie pracy może być ograniczoną alternatywą, zob. poniżej. Aby włączyć rachunkowość:
- Skonfiguruj serwer mariadb lub mysql zgodnie z opisem w dokumentacji rachunkowości slurm dokumentacji na jednym z węzłów w twoim inwentarzu i ustaw
openhpc_enable.database
natrue
dla tego węzła. - Ustaw
openhpc_slurm_accounting_storage_type
naaccounting_storage/slurmdbd
. - Skonfiguruj zmienne dla
slurmdbd.conf
poniżej.
Rola zajmie się konfigurowaniem poniższych zmiennych za Ciebie:
openhpc_slurm_accounting_storage_host
: Gdzie działa usługa przechowywania rachunkowości, tj. gdzie działa slurmdbd.
openhpc_slurm_accounting_storage_port
: Który port użyć do połączenia z usługą przechowywania rachunkowości.
openhpc_slurm_accounting_storage_user
: Nazwa użytkownika do uwierzytelnienia z usługą przechowywania rachunkowości.
openhpc_slurm_accounting_storage_pass
: Klucz munge lub hasło do bazy danych do uwierzytelnienia.
W przypadku bardziej zaawansowanego dostosowania lub skonfigurowania innego typu przechowywania, możesz chcieć ręcznie zmodyfikować te wartości.
Rachunkowość pracy
Jest to w dużej mierze zbędne, jeśli używasz wtyczki rachunkowości powyżej, ale da Ci podstawowe dane rachunkowe, takie jak czasy rozpoczęcia i zakończenia. Domyślnie nie jest skonfigurowana rachunkowość pracy.
openhpc_slurm_job_comp_type
: Mechanizm rejestrowania dla rachunkowości pracy. Może być jednym z jobcomp/filetxt
, jobcomp/none
, jobcomp/elasticsearch
.
openhpc_slurm_job_acct_gather_type
: Mechanizm zbierania danych rachunkowości pracy. Może być jednym z jobacct_gather/linux
, jobacct_gather/cgroup
i jobacct_gather/none
.
openhpc_slurm_job_acct_gather_frequency
: Czas próbkowania dla rachunkowości pracy (w sekundach).
openhpc_slurm_job_comp_loc
: Miejsce do przechowywania zapisów rachunkowości pracy. Zależy od wartości openhpc_slurm_job_comp_type
, np. dla jobcomp/filetxt
reprezentuje ścieżkę na dysku.
slurmdbd.conf
Poniższe opcje wpływają na slurmdbd.conf
. Proszę zapoznać się z dokumentacją slurm dokumentacji po więcej szczegółów.
Będziesz musiał skonfigurować te zmienne, jeśli ustawisz openhpc_enable.database
na true
.
openhpc_slurmdbd_port
: Port, na którym nasłuchuje slurmdb, domyślnie 6819
.
openhpc_slurmdbd_mysql_host
: Nazwa hosta lub IP, gdzie działa mariadb, domyślnie openhpc_slurm_control_host
.
openhpc_slurmdbd_mysql_database
: Baza danych do użycia do rachunkowości, domyślnie to slurm_acct_db
.
openhpc_slurmdbd_mysql_password
: Hasło do uwierzytelnienia w bazie danych. Musisz ustawić tę zmienną.
openhpc_slurmdbd_mysql_username
: Nazwa użytkownika do uwierzytelnienia w bazie danych, domyślnie to slurm
.
Przykładowy inwentarz
I inwentarz Ansible wygląda tak:
[openhpc_login]
openhpc-login-0 ansible_host=10.60.253.40 ansible_user=centos
[openhpc_compute]
openhpc-compute-0 ansible_host=10.60.253.31 ansible_user=centos
openhpc-compute-1 ansible_host=10.60.253.32 ansible_user=centos
[cluster_login:children]
openhpc_login
[cluster_control:children]
openhpc_login
[cluster_batch:children]
openhpc_compute
Przykładowe playbooki
Aby wdrożyć, utwórz playbook, który wygląda tak:
---
- hosts:
- cluster_login
- cluster_control
- cluster_batch
become: yes
roles:
- role: openhpc
openhpc_enable:
control: "{{ inventory_hostname in groups['cluster_control'] }}"
batch: "{{ inventory_hostname in groups['cluster_batch'] }}"
runtime: true
openhpc_slurm_service_enabled: true
openhpc_slurm_control_host: "{{ groups['cluster_control'] | first }}"
openhpc_slurm_partitions:
- name: "compute"
openhpc_cluster_name: openhpc
openhpc_packages: []
...
1 Slurm 20.11 usunął accounting_storage/filetxt
jako opcję. Ta wersja Slurm została wprowadzona w OpenHPC v2.1, ale repozytoria OpenHPC są wspólne dla wszystkich wersji OpenHPC v2.x. ↩
This role provisions an exisiting cluster to support OpenHPC control and batch compute functions and installs necessary runtime packages.
ansible-galaxy install stackhpc.openhpc