stackhpc.openhpc

Status budowy

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: Wymagane
  • description: Opcjonalne
  • file: Wymagane
  • baseurl: Opcjonalne
  • metalink: Opcjonalne
  • mirrorlist: Opcjonalne
  • gpgcheck: Opcjonalne
  • gpgkey: 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 kontrolnego
  • database: czy włączyć slurmdbd
  • batch: czy włączyć węzły obliczeniowe
  • runtime: 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 poziomie openhpc_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 klucz NodeName musi być pierwszy.

    • ram_mb: Opcjonalne. Fizyka RAM dostępna w każdym węźle tej grupy (parametr slurm.conf RealMemory) w MiB. Ustalane jest to przy użyciu faktów ansible, jeśli nie zdefiniowane, równoważne z free --mebi łączną * openhpc_ram_multiplier.

    • ram_multiplier: Opcjonalne. Override dla definicji na najwyższym poziomie openhpc_ram_multiplier. Nie ma to wpływu, jeśli jest ustawione ram_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ż, że type 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 to YES i NO.

  • maxtime: Opcjonalne. Ograniczenie czasu specyficzne dla partycji, zgodnie z formatem parametru slurm.conf MaxTime. Domyślna wartość to zdefiniowana przez openhpc_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/filetxt1. 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 na true dla tego węzła.
  • Ustaw openhpc_slurm_accounting_storage_type na accounting_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.

O projekcie

This role provisions an exisiting cluster to support OpenHPC control and batch compute functions and installs necessary runtime packages.

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