OCI HPC Cluster: 構築 - v2.10.6.4

:::note info
本ページは [OCI: HPC Cluster](https://qiita.com/itokazu/items/63d2e3cebdcdda5afce0) のサブページになります。
:::

# HPC Cluster v2.10.6.4 構築
本手順は [OCI: HPC Cluster](https://qiita.com/itokazu/items/63d2e3cebdcdda5afce0)に記載されている一般的な構成をする手順となります。
構成の中でチェックや入力項目などはスクリーンショットのまま選択をすることを推奨いたします。

:::note warn
【v2.10.6.4について】
Marketplaceで配信されているv2.10.6はデプロイ中にOpenLDAP Clientパッケージのインストールでエラーになる問題がありました。v2.10.6.4は私がv2.10.6を基にその問題や微細な修正をしたものになります。
:::

## v2.10.6.4の入手
以下のURLより`Source code(zip)`をクリックしzipファイルをダウンロードします。
https://github.com/kazuitox/oci-hpc/releases/tag/v2.10.6.4

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/e2686d53-dc5c-1808-1a6c-31180fe73ff9.png)


## Resource Managerのstackを選択する
メニュー → Developer Services → Stacksを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/0059f50a-d459-c48b-a23d-b478704ce9b2.png)


## Create stackをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/56b6b683-d8ff-d143-0445-e3c96fa1f2b1.png)


## 1: Stack Infomation
Stack configurationで.Zip fileを選択し先ほどダウンロードしたzipファイルをアップロードします。
Nextをクリックして次に進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/bd02aba2-f21b-157b-3e68-397408f531a0.png)

## 2: Configure variables
表示されたメニューから選択し、構成を作成します。

### Cluster configuration
- <font color="blue">Public SSH Key</font>: デフォルトユーザーであるopcユーザーに割り当てるPublic SSH Keyを入力します。ヘッドノードへのログインに利用される。
- <font color="blue">use custom cluster name</font>: ヘッドノードのインスタンス名(≒ホスト名)の接頭辞として設定される。チェックを外すとランダムな文字列で生成される。
- <font color="blue">Configure LDAP authentication from controller</font>: ヘッドノードにLDAPサーバを構築する。追加ユーザーのヘッドノードログイン、マルチノードでの計算に利用される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/2b7ad392-ce60-2cb6-4ebe-1612db848219.png)



### Headnode options
ヘッドノードに関する設定
- <font color="blue">Availability Domain</font>: デプロイ対象のADを選択する。東京や大阪のリージョンは1つのみなのでデフォルトから変更する必要はない。
- <font color="blue">bastion_shape</font>: ヘッドノードのShapeとスペックを選択する。
- <font color="blue">cores</font>: bastion_shapeでFlexタイプを選択した場合にCPUコア数指定する。
- <font color="blue">Use custom memory size</font>: bastion_shapeでFlexタイプを選択し、メモリサイズをデフォルトから変更したい場合にはチェックをし、表示されるボックスに数値を入力する。
- <font color="blue">Size of the boot volume in GB</font>: ヘッドノードのBoot Volume容量を指定する。
- <font color="blue">Enable boot volume backup</font>: ヘッドノードのBoot Volumeのバックアップをする場合にはチェックを入れる。
- <font color="blue">Create Object Storage PAR</font>: ヘッドノードのモニタリングメトリックをObjectStorageに保管するためのPARを作成する。障害時にサポートにメトリックデータの共有で利用。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/84589f65-6265-fa32-ac3c-a9e0a206584c.png)


### Compute node options
計算ノードに関する設定
-  <font color="blue">Multiple ADs</font>: 海外リージョンでADが3つある環境で複数のADを利用した環境を構築する場合にチェックを入れる
-  <font color="blue">Use cluster network</font>: RoCEv2によるRDMAを利用する場合にチェックを入れる。これにチェックをするとRoCEv2が利用できるShapeが`Shape of the Compute Node`にリストされ、チェックを入れない場合は、RoCEv2が利用できないShapeがリストされる。
-  <font color="blue">Use compute cluster rather than cluster network</font>: `cluster network`と同様にRoCEv2でInterconnectを構成する手法の一つ。ここでは`cluster network`による構成とする。
-  <font color="blue">Initial cluster size</font>: 恒久的に常時起動する計算ノード数を指定する。0であれば常時起動するノードはなく、Autoscalingベースとなる。
- Hyperthreading enabled: ハイパースレッディングの有効/無効の設定。アプリの特性に応じて選択する。
-  <font color="blue">Size of the boot volume in GB</font>: 計算ノードのBoot Volume容量を指定する。
-  <font color="blue">use marketplace image</font>: RoCEv2を利用する場合は必須。HPC向けのOS設定やOpenMPIなどがインストールされたイメージで計算ノードを起動します。
- <font color="blue">use older marketplace images</font>: RoCEv2対応の古いOSを利用する場合に選択する。
- <font color="blue">Image versions</font>: HPC_OL8 or GPU から選択する。ここではBM.Optimized3.36というCPUのみのインスタンスなので`HPC_OL8`の選択を推奨。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/1978d11a-c21f-5d93-6598-9b4ed8a82718.png)



### Additional Login Node
- <font color="blue">Loing Nodes</font>: ヘッドノードのほかに、ユーザーがログインしてジョブを投入する専用のノードが必要な場合はチェックをする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/20d47e9f-724b-19f3-2d82-974a9d7eda9b.png)


### Autoscaling
- <font color="blue">Scheduler based autoscaling</font>: Autoscaling を利用する場合はチェックをする
- <font color="blue">Monitor the autoscaling</font>: Autoscaling のモニタリングをPrometheusとGrafanaで構成する
- <font color="blue">RDMA Latency check</font>: 計算ノードのセットアップの一環で RDMA のレイテンシーチェックをする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/8cc433a9-344d-161f-739d-b0d5f917a022.png)


### API Authentication, needed for autoscaling
- <font color="blue">Use Instance Principal insted of configuration file</font>: ヘッドノードが`Instance Principal`を利用したAPIで計算ノードの作成・削除を実施する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/6125df37-ae0c-06a9-b8bf-f7591980d65b.png)


### Additional file system
追加のNFSサーバの指定を行う。
- <font color="blue">Add another NFS filesystem</font>: 既存のNFSサーバ、または新規のマネージドNFSサービス(FSS)の利用する場合にチェック
- <font color="blue">Create FSS</font>: FSSを新規に作成する
- <font color="blue">Number of FSS mount target</font>:マウントターゲット数を指定。数を増やすことで複数計算ノード利用時に全体のスループットを向上させることが可能です。mount target数はService Limitで上限設定があるため確認の上数を設定してください。最大8まで指定可能です。
- <font color="blue">NFS Path</font>: ヘッドノード、計算ノードにマウントさせるマウントポイントの指定
- <font color="blue">NFS server Path</font>: 新規に構成するFSSサービス内のPath
- <font color="blue">FSS compartment</font>: FSSを作成するコンパートメントを指定
- <font color="blue">FSS Availability Domain</font>: FSSを配置するADを指定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/2f8786ea-0520-e9bb-bc63-acc93c492390.png)


### Advanced bastion options
計算ノードの拡張オプションの指定。
- use standard bastion image: ヘッドノードのイメージとして標準的なイメージ(HPC_OL8)を利用する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/9989837c-6b36-4a15-e7ce-7b0b087fcd05.png)



### Advanced storage options
ヘッドノードにBlock Volumeの追加や、計算ノード搭載のNVMeストレージのマウントポイント変更など可能。
今回はデフォルトから変更しない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/c873dedb-332b-eff5-a065-9f9c0940e772.png)


### Network options
今回はデフォルトから変更しない。
- <font color="blue">Use Existing VCN: 既存のVCN配下にデプロイする際にチェックする
- <font color="blue">Deploy Master Node without a public IP</font>: ヘッドノードにPublic IPを持たせないで構成する
- <font color="blue">VCN IP range</font>: VCNのCIDRを指定
- <font color="blue">Master Node subnet IP range</font>: ヘッドノードを配置するPublic SubnetのCIDRを指定
- <font color="blue">Private Subnet IP range</font>: 計算ノードを配置するPrivate IPのCIDRを指定
- <font color="blue">RDMA subnet IP range</font>: RoCEv2のI/Fに設定するInterconnect NetworkのCIDRを指定
- <font color="blue">Additional subnet IP range</font>: 上記とは別にVCN内にPrivate Subnetを作る場合のCIDRを指定
- <font color="blue">DNS entry</font>: DNS managementを利用する。FSSのNumber of FSS mount targetを2以上にした際は必須。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/7a9dad77-9ffa-f99a-3d09-7b19a9ae80c6.png)



### Software
- <font color="blue">Sudo Access</font>: `privilege group`に`sudo`権限を付与する
- <font color="blue">Name of the group with privileges</font>: `privilege group`名を指定する
- <font color="blue">Install SLURM</font>: SLURMをインストールする場合はチェックする
- <font color="blue">Share spool directory</font>: SLURMのspoolディレクトリをNFSで公開する
- <font color="blue">Create a backup Slurm Controller</font>: SLURMの冗長化構成としてセカンダリノードを作成する
- <font color="blue">Create Rack aware topology</font>: 試験的なオプション
- <font color="blue">Queue Name</font>: SLURMで構成するデフォルトのキュー名の指定
- <font color="blue">Install Sparck package manager</font>: Sparck を入れる場合はチェックする
- <font color="blue">Install HPC Cluster Monitoring Tools</font>: モニタリングツールを構成する
- <font color="blue">Install Nvidia Enroot for containerrized GPU workloads</font>: GPUインスタンスでコンテナを利用する場合にチェックを入れる
- <font color="blue">Enable PAM</font>: ユーザーに対して計算ノードへのSSHをさせない場合はチェックを入れる
- <font color="blue">Enable Limits for Slurm jobs</font>: ユーザーに対してSLURMのジョブ投入を制限設定を有効にする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/613e488b-4f5f-b601-fb0b-ce295cd82a92.png)



### Debug
- <font color="blue">Configure system</font>: デバッグオプション。計算ノードで上記で指定したセットアップを行わずに作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/017226d4-6d9c-f7a5-a7e7-53cc62509fa9.png)


Next をクリックすると以下の確認画面になるので、一番下にある`Run apply`にチェックを入れて`Create`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/d1ee24ee-049a-b2ee-be2b-407c179207a4.png)


## 作成が開始
Create をクリックすると、Resouce Manager の画面に切り替わりデプロイが開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/87b51207-f0ca-715f-623c-8dd6dd87df23.png)



### 作成完了
SUCCEEDED となったら完了。
画面左下のOutputsをクリックすると作成されたヘッドノード(bastion)のPublic IPが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/030973f3-65aa-8f58-b6c6-ac2c935c0b29.png)



以上で作成は完了です。メインページの[チュートリアル](https://qiita.com/itokazu/items/63d2e3cebdcdda5afce0#3-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)に進みましょう。