stackhpc.openhpc

Build-Status

stackhpc.openhpc

Dieses Ansible-Role installiert Pakete und führt Konfigurationen durch, um einen OpenHPC v2.x Slurm-Cluster bereitzustellen.

Als Rolle muss es aus einem Playbook verwendet werden, wofür ein einfaches Beispiel unten gegeben ist. Dieser Ansatz bedeutet, dass es vollkommen modular ist, ohne Annahmen über verfügbare Netzwerke oder Clusterfunktionen, außer einigen Namenskonventionen. Jedes gewünschte Cluster-Dateisystem oder andere erforderliche Funktionen können problemlos integriert werden, indem zusätzliche Ansible-Rollen oder andere Ansätze verwendet werden.

Das minimale Image für Knoten ist ein RockyLinux 8 GenericCloud-Image.

Rollen-Variablen

openhpc_extra_repos: Optionale Liste. Zusätzliche Yum-Repository-Definitionen zur Konfiguration, die dem Format des Ansible yum_repository Moduls folgen. Respektierte Schlüssel für jedes Listenelement:

  • name: Erforderlich
  • description: Optional
  • file: Erforderlich
  • baseurl: Optional
  • metalink: Optional
  • mirrorlist: Optional
  • gpgcheck: Optional
  • gpgkey: Optional

openhpc_slurm_service_enabled: Boolean, ob der entsprechende Slurm-Dienst (slurmd/slurmctld) aktiviert werden soll.

openhpc_slurm_service_started: Optionales Boolean. Ob Slurm-Dienste gestartet werden. Wenn auf falsch gesetzt, werden alle Dienste gestoppt. Standardmäßig auf openhpc_slurm_service_enabled.

openhpc_slurm_control_host: Erforderlicher String. Ansible-Inventar-Hostname (und Kurznamen) des Controllers, z.B. "{{ groups['cluster_control'] | first }}".

openhpc_slurm_control_host_address: Optionaler String. IP-Adresse oder Name, um openhpc_slurm_control_host zu verwenden, z.B. um eine andere Schnittstelle als die aus openhpc_slurm_control_host aufgelöst zu verwenden.

openhpc_packages: Zusätzliche OpenHPC-Pakete zur Installation.

openhpc_enable:

  • control: ob den Kontroll-Host aktivieren
  • database: ob slurmdbd aktivieren
  • batch: ob Rechenknoten aktivieren
  • runtime: ob OpenHPC-Runtime aktivieren

openhpc_slurmdbd_host: Optional. Wo slurmdbd bereitgestellt werden soll, wenn diese Rolle verwendet wird, um slurmdbd bereitzustellen, andernfalls wo eine vorhandene slurmdbd läuft. Dies sollte der Name eines Hosts in Ihrem Inventar sein. Setzen Sie dies auf none, um zu verhindern, dass die Rolle slurmdbd verwaltet. Standardmäßig openhpc_slurm_control_host.

openhpc_slurm_configless: Optional, Standard false. Wenn wahr, wird der "configless" Modus von Slurm verwendet.

openhpc_munge_key: Optional. Definieren Sie einen Munge-Schlüssel zur Verwendung. Wenn nicht bereitgestellt, wird ein Schlüssel generiert, aber openhpc_slurm_control_host muss im Play enthalten sein.

openhpc_login_only_nodes: Optional. Wenn der "configless" Modus verwendet wird, geben Sie den Namen einer Ansible-Gruppe an, die Knoten enthält, die nur Anmeldungen gestatten (d.h. keine Kontrollknoten), falls erforderlich. Diese Knoten führen slurmd aus, um den Kontrollknoten für die Konfiguration zu kontaktieren.

openhpc_module_system_install: Optional, Standard true. Ob ein Umgebungsmodulsystem installiert werden soll. Wenn wahr, wird lmod installiert. Wenn falsch, können Sie entweder Ihr eigenes Modulsystem bereitstellen oder ganz darauf verzichten.

slurm.conf

openhpc_slurm_partitions: Optional. Liste von einem oder mehreren Slurm-Partitionen, Standard []. Jede Partition kann die folgenden Werte enthalten:

  • groups: Wenn es mehrere Knotengruppen gibt, die die Partition bilden, kann hier eine Liste von Gruppenobjekten definiert werden. Andernfalls kann groups weggelassen werden und die folgenden Attribute können im Partition-Objekt definiert werden:

    • name: Der Name der Knoten innerhalb dieser Gruppe.

    • cluster_name: Optional. Eine Überschreibung für die oberste Definition openhpc_cluster_name.

    • extra_nodes: Optional. Eine Liste zusätzlicher Knotendefinitionen, z.B. für Knoten in dieser Gruppe/Partition, die nicht von dieser Rolle verwaltet werden. Jedes Element sollte ein Dict sein, mit Schlüsseln/Werten gemäß der "NODE CONFIGURATION" Dokumentation für slurm.conf. Beachten Sie, dass der Schlüssel NodeName zuerst kommen muss.

    • ram_mb: Optional. Der verfügbare physische RAM in jedem Knoten dieser Gruppe (slurm.conf Parameter RealMemory) in MiB. Dies wird unter Verwendung von Ansible-Fakten gesetzt, wenn nicht definiert, entspricht es free --mebi total * openhpc_ram_multiplier.

    • ram_multiplier: Optional. Eine Überschreibung der obersten Definition openhpc_ram_multiplier. Hat keine Wirkung, wenn ram_mb gesetzt ist.

    • gres: Optional. Liste von Dicts, die allgemeine Ressourcen definieren. Jeder Dict muss definieren:

      • conf: Ein String mit der Ressourcenspezifikation, der das Format <name>:<type>:<number> erfordert, z.B. gpu:A100:2. Beachten Sie, dass der type eine willkürliche Zeichenkette ist.
      • file: Ein String mit dem File (Pfad zu Gerät(en)) für diese Ressource, z.B. /dev/nvidia[0-1] für das obige Beispiel.

      Beachten Sie, dass GresTypes in openhpc_config gesetzt werden müssen, wenn dies verwendet wird.

  • default: Optional. Ein Boolean-Flag, ob diese Partition die Standardpartition ist. Zulässige Einstellungen sind YES und NO.

  • maxtime: Optional. Eine partition-spezifische Zeitbeschränkung, die dem Format des slurm.conf Parameters MaxTime folgt. Der Standardwert wird durch openhpc_job_maxtime gegeben. Der Wert sollte in Anführungszeichen gesetzt werden, um Ansible-Konvertierungen zu vermeiden.

  • partition_params: Optional. Zuordnung zusätzlicher Parameter und Werte für die Partition-Konfiguration.

Für jede Gruppe (falls verwendet) oder Partition werden alle Knoten in einer Ansible-Inventargruppe <cluster_name>_<group_name> zur Gruppe/Partition hinzugefügt. Beachten Sie:

  • Knoten können beliebige Hostnamen haben, diese sollten jedoch klein geschrieben werden, um eine Übereinstimmung zwischen Inventar und tatsächlichem Hostnamen zu vermeiden.
  • Knoten in einer Gruppe werden als homogen hinsichtlich Prozessor und Speicher angenommen.
  • Eine Inventargruppe kann leer oder fehlen, aber wenn sie nicht fehlt, muss das Play mindestens einen Knoten von ihr enthalten (wird verwendet, um Informationen über den Prozessor festzulegen).
  • Knoten dürfen nicht in mehr als einer Gruppe erscheinen.

openhpc_job_maxtime: Maximale Jobzeitbeschränkung, Standard '60-0' (60 Tage). Siehe slurm.conf Parameter MaxTime für das Format. Der Standardwert beträgt 60 Tage. Der Wert sollte in Anführungszeichen gesetzt werden, um Ansible-Konvertierungen zu vermeiden.

openhpc_cluster_name: Name des Clusters.

openhpc_config: Optional. Zuordnung zusätzlicher Parameter und Werte für slurm.conf. Beachten Sie, dass diese alle in templates/slurm.conf.j2 enthaltenen überschreiben werden.

openhpc_ram_multiplier: Optional, Standard 0.95. Multiplikator, der bei der Berechnung verwendet wird: total_memory * openhpc_ram_multiplier, wenn RealMemory für die Partition in slurm.conf festgelegt wird. Kann auf einer Partitionsebene mit openhpc_slurm_partitions.ram_multiplier überschrieben werden. Hat keine Wirkung, wenn openhpc_slurm_partitions.ram_mb gesetzt ist.

openhpc_state_save_location: Optional. Absoluter Pfad für den Slurm-Controller-Zustand (slurm.conf Parameter StateSaveLocation)

Abrechnung

Standardmäßig ist kein Abrechnungs-Speicher konfiguriert. OpenHPC v1.x und nicht aktualisierte OpenHPC v2.0-Cluster unterstützen dateibasierten Abrechnungsspeicher, der ausgewählt werden kann, indem die Rollenvariable openhpc_slurm_accounting_storage_type auf accounting_storage/filetxt1 gesetzt wird. Die Abrechnung für OpenHPC v2.1 und aktualisierte OpenHPC v2.0-Clustern erfordert den Slurm-Datenbankdaemon, slurmdbd (obwohl die Abschluss eines Jobs eine eingeschränkte Alternative sein kann, siehe unten. Um die Abrechnung zu aktivieren:

  • Konfigurieren Sie einen MariaDB- oder MySQL-Server wie in der Slurm-Abrechnungs Dokumentation auf einem der Knoten in Ihrem Inventar beschrieben und setzen Sie openhpc_enable.database auf true für diesen Knoten.
  • Setzen Sie openhpc_slurm_accounting_storage_type auf accounting_storage/slurmdbd.
  • Konfigurieren Sie die Variablen für slurmdbd.conf wie unten.

Die Rolle kümmert sich um die Konfiguration der folgenden Variablen für Sie:

openhpc_slurm_accounting_storage_host: Wo der Abrechnungs-Speicherdienst läuft, d.h. wo slurmdbd läuft.

openhpc_slurm_accounting_storage_port: Welchen Port verwenden, um sich mit dem Abrechnungs-Speicher zu verbinden.

openhpc_slurm_accounting_storage_user: Benutzername zur Authentifizierung beim Abrechnungsspeicher.

openhpc_slurm_accounting_storage_pass: Mungekey oder Datenbank-Passwort zur Authentifizierung.

Für fortgeschrittene Anpassungen oder um einen anderen Speichertyp zu konfigurieren, möchten Sie möglicherweise diese Werte manuell ändern.

Job-Abrechnung

Diese ist größtenteils redundant, wenn Sie das oben genannte Abrechnungs-Plugin verwenden, bietet jedoch grundlegende Abrechnungsdaten wie Start- und Endzeiten. Standardmäßig ist keine Job-Abrechnung konfiguriert.

openhpc_slurm_job_comp_type: Protokollierungsmechanismus für die Job-Abrechnung. Kann einer von jobcomp/filetxt, jobcomp/none, jobcomp/elasticsearch sein.

openhpc_slurm_job_acct_gather_type: Mechanismus zur Erfassung von Job-Abrechnungsdaten. Kann einer von jobacct_gather/linux, jobacct_gather/cgroup und jobacct_gather/none sein.

openhpc_slurm_job_acct_gather_frequency: Abtastintervall für die Job-Abrechnung (Sekunden).

openhpc_slurm_job_comp_loc: Speicherort zum Speichern der Job-Abrechnungsunterlagen. Hängt vom Wert von openhpc_slurm_job_comp_type ab, z.B. für jobcomp/filetxt entspricht es einem Pfad auf der Festplatte.

slurmdbd.conf

Die folgenden Optionen betreffen slurmdbd.conf. Bitte sehen Sie sich die Slurm Dokumentation für weitere Details an. Sie müssen diese Variablen konfigurieren, wenn Sie openhpc_enable.database auf true gesetzt haben.

openhpc_slurmdbd_port: Port, auf dem slurmdb hören soll, Standardwert ist 6819.

openhpc_slurmdbd_mysql_host: Hostname oder IP, wo MariaDB läuft, Standardwert ist openhpc_slurm_control_host.

openhpc_slurmdbd_mysql_database: Datenbank, die für die Abrechnung verwendet werden soll, Standardwert ist slurm_acct_db.

openhpc_slurmdbd_mysql_password: Passwort zur Authentifizierung bei der Datenbank. Diese Variable muss gesetzt werden.

openhpc_slurmdbd_mysql_username: Benutzername zur Authentifizierung bei der Datenbank, Standardwert ist slurm.

Beispiel-Inventar

Und ein Ansible-Inventar sieht so aus:

[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

Beispiel-Playbooks

Um zu installieren, erstellen Sie ein Playbook, das folgendermaßen aussieht:

---
- 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 hat accounting_storage/filetxt als Option entfernt. Diese Version von Slurm wurde in OpenHPC v2.1 eingeführt, aber die OpenHPC-Repos sind für alle OpenHPC v2.x-Versionen gleich.

Über das Projekt

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

Installieren
ansible-galaxy install stackhpc.openhpc
Lizenz
apache-2.0
Downloads
1.8k
Besitzer
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.