stackhpc.openhpc

ビルドステータス

stackhpc.openhpc

このAnsibleロールは、OpenHPC v2.x Slurmクラスタを提供するために、パッケージのインストールと設定を行います。

このロールはプレイブックから使用する必要があります。以下にシンプルな例を示します。このアプローチにより、利用可能なネットワークやクラスタの特性についての前提なしに、完全にモジュール化されています。任意のクラスタファイルシステムや必要な機能は、追加のAnsibleロールや他のアプローチを使用して自由に統合できます。

ノードの最小イメージは、RockyLinux 8 GenericCloudイメージです。

ロール変数

openhpc_extra_repos: オプションリスト。Yumリポジトリの追加定義を設定します。Ansibleのyum_repositoryモジュールの形式に従います。各リスト要素の尊重されるキー:

  • name: 必須
  • description: オプション
  • file: 必須
  • baseurl: オプション
  • metalink: オプション
  • mirrorlist: オプション
  • gpgcheck: オプション
  • gpgkey: オプション

openhpc_slurm_service_enabled: ブール値。適切なslurmサービス(slurmd/slurmctld)を有効にするかどうか。

openhpc_slurm_service_started: オプションのブール値。slurmサービスを開始するかどうか。falseに設定した場合、すべてのサービスが停止します。デフォルトはopenhpc_slurm_service_enabledです。

openhpc_slurm_control_host: 必須の文字列。コントローラーのAnsibleインベントリホスト名(および短いホスト名)、例: "{{ groups['cluster_control'] | first }}"

openhpc_slurm_control_host_address: オプションの文字列。openhpc_slurm_control_hostで使用するIPアドレスまたは名前。例: openhpc_slurm_control_hostから解決されるインターフェースとは異なるインターフェースを使用する場合。

openhpc_packages: インストールする追加のOpenHPCパッケージ。

openhpc_enable:

  • control: コントロールホストを有効にするかどうか
  • database: slurmdbdを有効にするかどうか
  • batch: 計算ノードを有効にするかどうか
  • runtime: OpenHPCランタイムを有効にするかどうか

openhpc_slurmdbd_host: オプション。このロールを使用してslurmdbdをデプロイする場合はslurmdbdをデプロイする場所、それ以外の場合は既存のslurmdbdが稼働している場所。この値はインベントリ内のホストの名前にする必要があります。ロールがslurmdbdを管理しないようにするには、noneに設定します。デフォルトはopenhpc_slurm_control_hostです。

openhpc_slurm_configless: オプション、デフォルトはfalse。trueの場合、slurmの"configless"モードが使用されます。

openhpc_munge_key: オプション。使用するmungeキーを定義します。提供しない場合は生成されますが、openhpc_slurm_control_hostがプレイに含まれている必要があります。

openhpc_login_only_nodes: オプション。"configless"モードを使用している場合は、ログインのみのノードを含むansibleグループの名前を指定します(すなわち、コントロールノードでもないノード)。これらのノードは、設定のためにコントロールノードに連絡するためにslurmdを実行します。

openhpc_module_system_install: オプション、デフォルトはtrue。環境モジュールシステムをインストールするかどうか。trueの場合、lmodがインストールされます。falseの場合は、独自のモジュールシステムを提供するか、モジュールシステムなしで進むことができます。

slurm.conf

openhpc_slurm_partitions: オプション。1つ以上のslurmパーティションのリスト、デフォルトは[]。各パーティションは次の値を含むことができます:

  • groups: パーティションを構成する複数のノードグループがある場合は、ここにグループオブジェクトのリストを定義できます。それ以外の場合、groupsを省略し、次の属性をパーティションオブジェクトに定義できます:

    • name: このグループ内のノードの名前。

    • cluster_name: オプション。最上位定義openhpc_cluster_nameの上書き。

    • extra_nodes: オプション。このグループ/パーティションによって制御されていないノードの追加定義のリスト。各アイテムは辞書で、"NODE CONFIGURATION"のスラーム.confドキュメントに従ったキー/値を持つ必要があります。キーNodeNameは最初である必要があります。

    • ram_mb: オプション。このグループの各ノードで利用可能な物理RAM(slurm.confパラメータRealMemory)をMiB単位で示します。定義されていない場合はansibleファクトを使用して設定され、free --mebiの合計 * openhpc_ram_multiplierに相当します。

    • ram_multiplier: オプション。最上位定義openhpc_ram_multiplierの上書き。ram_mbが設定されている場合は効果がありません。

    • gres: オプション。ジェネリックリソースを定義する辞書のリスト。各辞書は次を定義する必要があります:

      • conf: リソース仕様を含む文字列ですが、形式は<name>:<type>:<number>が必要です。例:gpu:A100:2typeは任意の文字列です。
      • file: このリソースのファイル(デバイスへのパス)。例えば、上記の例の場合は/dev/nvidia[0-1]です。

      これは使用される場合、GresTypesopenhpc_configに設定されている必要があります。

  • default: オプション。このパーティションがデフォルトであるかどうかのブールフラグ。有効な設定はYESNO

  • maxtime: オプション。 slurm.confパラメータMaxTimeの形式に従ったパーティション固有の時間制限。デフォルト値はopenhpc_job_maxtimeによって与えられます。この値はAnsibleの変換を避けるために引用されるべきです。

  • partition_params: オプション。 パーティション設定のための追加パラメータと値のマッピング。

グループ(使用される場合)またはパーティションに対して、Ansibleインベントリグループ<cluster_name>_<group_name>内のノードがグループ/パーティションに追加されます。以下に注意してください:

  • ノードは任意のホスト名を持つことができますが、これらは小文字にする必要があります。そうしないとインベントリと実際のホスト名の不一致が起こります。
  • グループ内のノードは、プロセッサーとメモリの観点から均質であると仮定されます。
  • インベントリグループは空または欠落している可能性がありますが、そうでない場合、そのプレイには少なくとも1つのノードが必要です(プロセッサ情報を設定するために使用されます)。
  • ノードは1つのグループにしか存在しないことができません。

openhpc_job_maxtime: 最大ジョブ時間制限、デフォルトは'60-0'(60日)。フォーマットについてはslurm.confのパラメータMaxTimeを参照してください。デフォルトは60日です。この値はAnsibleの変換を避けるために引用されるべきです。

openhpc_cluster_name: クラスタの名前。

openhpc_config: オプション。slurm.confのための追加パラメータと値のマッピング。これらはtemplates/slurm.conf.j2に含まれるものを上書きします。

openhpc_ram_multiplier: オプション、デフォルトは0.95slurm.confでのパーティションのRealMemoryを設定する際に使用される計算の乗数:total_memory * openhpc_ram_multiplieropenhpc_slurm_partitions.ram_multiplierを使用してパーティションごとに上書きできます。openhpc_slurm_partitions.ram_mbが設定されている場合は効果がありません。

openhpc_state_save_location: オプション。Slurmコントローラーの状態の絶対パス(slurm.confのパラメータStateSaveLocation )

会計

デフォルトでは、会計ストレージは設定されていません。OpenHPC v1.xおよび更新されていないOpenHPC v2.0クラスタはファイルベースの会計ストレージをサポートしています。これは、ロール変数openhpc_slurm_accounting_storage_typeaccounting_storage/filetxtに設定することで選択できます。OpenHPC v2.1および更新されたOpenHPC v2.0クラスタの会計にはSlurmデータベースデーモンslurmdbdが必要です(ただし、ジョブの完了が限られた代替手段となる可能性があります。会計を有効にするには:

  • インベントリ内のノードの1つで、slurm会計ドキュメントに記載されたとおりにmariadbまたはmysqlサーバーを設定し、このノードのためにopenhpc_enable.databasetrueに設定します。
  • openhpc_slurm_accounting_storage_typeaccounting_storage/slurmdbdに設定します。
  • 以下のslurmdbd.conf用の変数を設定します。

このロールは、次の変数を設定することを自動で行います:

openhpc_slurm_accounting_storage_host: 会計ストレージサービスが実行されている場所、すなわちslurmdbdが実行されている場所。

openhpc_slurm_accounting_storage_port: 会計ストレージに接続するために使用するポート。

openhpc_slurm_accounting_storage_user: 会計ストレージと認証するためのユーザー名。

openhpc_slurm_accounting_storage_pass: 認証に使用するMungeキーまたはデータベースのパスワード。

より高度なカスタマイズや別のストレージタイプを設定するには、これらの値を手動で変更することができます。

ジョブ会計

これは上記の会計プラグインを使用している場合は大部分が冗長ですが、開始時間と終了時間などの基本的な会計データを提供します。デフォルトでは、ジョブ会計は設定されていません。

openhpc_slurm_job_comp_type: ジョブ会計のためのロギングメカニズム。次のいずれかになります: jobcomp/filetxtjobcomp/nonejobcomp/elasticsearch

openhpc_slurm_job_acct_gather_type: ジョブ会計データを収集するためのメカニズム。次のいずれかになります: jobacct_gather/linuxjobacct_gather/cgroupjobacct_gather/none

openhpc_slurm_job_acct_gather_frequency: ジョブ会計のサンプリング期間(秒)。

openhpc_slurm_job_comp_loc: ジョブ会計記録を保存する場所。openhpc_slurm_job_comp_typeの値に依存します。例えば、jobcomp/filetxtの場合はディスク上のパスを表します。

slurmdbd.conf

以下のオプションは、slurmdbd.confに影響します。詳細については、slurmのドキュメントを参照してください。 openhpc_enable.databasetrueに設定した場合、これらの変数を設定する必要があります。

openhpc_slurmdbd_port: slurmdbがリッスンするポート、デフォルトは6819です。

openhpc_slurmdbd_mysql_host: mariadbが実行されているホスト名またはIP、デフォルトはopenhpc_slurm_control_hostです。

openhpc_slurmdbd_mysql_database: 会計に使用するデータベース、デフォルトはslurm_acct_dbです。

openhpc_slurmdbd_mysql_password: データベース認証用のパスワード。この変数は設定する必要があります。

openhpc_slurmdbd_mysql_username: データベース認証用のユーザー名、デフォルトはslurmです。

インベントリの例

以下のようなAnsibleインベントリ:

[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

プレイブックの例

デプロイするには、以下のようなプレイブックを作成します:

---
- 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ではオプションとしてaccounting_storage/filetxtが削除されました。このSlurmのバージョンはOpenHPC v2.1で導入されましたが、OpenHPCリポジトリはすべての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
ライセンス
apache-2.0
ダウンロード
1.8k
所有者
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.