はじめに
HPC(High-Performance Computing)環境では、従来からLinuxのCUIを中心にユーザーが利用をしてきました。一部の商用製品やHPCクラウドのSaaSではGUIベースで利用できる製品も存在しています。
本記事では、オープンソースでそのようなことが利用できるOpenOnDemandのインストール手順をご紹介いたします。インストールするベースの環境としてはOCIのHPC Cluster(Slurmクラスタ)上へのインストールをしていますが、同様なSlurmクラスタであれば同じ手順でインストールが可能であると思います。
OpenOndemandとは?
OpenOnDemand(https://openondemand.org/) は、ジョブスケジューラ(Slurm、PBS、LSF など)をバックエンドに持つ HPC クラスター向けのオープンソース Web ポータルです。ユーザーは Web ブラウザを通じて、以下のような対話的操作を行えます。
機能 | 内容 |
---|---|
ジョブ管理 | ジョブの投入、ステータス確認、キャンセルや再実行 |
ターミナルアクセス | ブラウザ上で直接対話型シェルを起動 |
ファイルマネージャ | データアップロード・ダウンロード、パーミッション操作 |
ログビューア | 標準出力・標準エラーのリアルタイム閲覧 |
アプリケーションランチャー | Matlab、Jupyter Notebookなどの GUI アプリケーション起動 |
これらの機能により、これまで CLI ベースでしか操作できなかったHPCクラスターに対し、エンドユーザーが直感的かつ安全にアクセスできる環境を提供します。
HPC Clusterとは?
HPC Clusterとは、OCI上でHPCワークロードの実行環境を簡単にデプロイできるTerraform+Ansibleによるスクリプトです。
OCIではResource ManagerというTerraform as a Serviceがあり、Webベースでこのスクリプトを簡単に展開することでき、ウィザード形式でデプロイができます。
デプロイ手順
1. HPC Clusterの構成
以下を参考に構成してください。
2. ログインノードにSSHアクセスする
HPC Clusterで構成されたログインノードにopcユーザーでSSHアクセスします
ssh opc@<Public IP>
3. インストールに必要なリポジトリを有効にする
sudo dnf install epel-release
sudo yum-config-manager --enable ol8_codeready_builder
sudo yum-config-manager --enable ol8_developer_EPEL
4. 事前に必要なパッケージのインストール
sudo dnf -y module enable ruby:3.3 nodejs:20
5. Open OnDemand 4 をインストール
sudo dnf install -y https://yum.osc.edu/ondemand/4.0/ondemand-release-web-4.0-1.el8.noarch.rpm
sudo dnf install -y ondemand mod_authnz_pam
sudo systemctl enable --now httpd
6. Apache httpd の PAM 認証モジュールを有効化する
sudo vi /etc/httpd/conf.modules.d/55-authnz_pam.conf
# LoadModule authnz_pam_module modules/mod_authnz_pam.so
↓以下に修正
LoadModule authnz_pam_module modules/mod_authnz_pam.so
7. 自己署名 TLS 証明書を作成
PRIVATE_IP="<ログインノードのPrivate IP>"
sudo openssl req -new -newkey rsa:4096 -nodes -x509 -sha256 -days 825 \
-keyout /etc/pki/tls/private/ood-ip.key \
-out /etc/pki/tls/certs/ood-ip.crt \
-subj "/CN=${IP}" \
-addext "subjectAltName = IP:${PRIVATE_IP}"
8. OOD ホスト自身の CA 信頼ストアに追加
sudo cp /etc/pki/tls/certs/ood-self.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract
9. Apache/OOD ポータル設定
注意: <ログインノードのPublic IP>
を置き換えて実行する。
sudo mkdir -p /etc/ood/config
cat <<'EOF' | sudo tee /etc/ood/config/ood_portal.yml
servername: "<ログインノードのPublic IP>"
ssl:
- 'SSLCertificateFile "/etc/pki/tls/certs/ood-ip.crt"'
- 'SSLCertificateKeyFile "/etc/pki/tls/private/ood-ip.key"'
auth:
- 'AuthType Basic'
- 'AuthName "Open OnDemand"'
- 'AuthBasicProvider PAM'
- 'AuthPAMService ood'
- 'Require valid-user'
EOF
sudo cp /etc/pam.d/sshd /etc/pam.d/ood
sudo /opt/ood/ood-portal-generator/sbin/update_ood_portal
sudo systemctl enable --now httpd
10.Slurm クラスタ定義
注意: <ログインノードのPrivate IP>
を置き換えて実行する。
sudo mkdir -p /etc/ood/config/clusters.d
cat <<'EOF' | sudo tee /etc/ood/config/clusters.d/myslurm.yml
---
v2:
metadata:
title: "OCI HPC Cluster"
login:
host: "<ログインノードのPrivate IP>"
job:
adapter: "slurm"
bin: "/usr/bin"
conf: "/etc/slurm/slurm.conf"
copy_environment: false
EOF
11.ポータルにログインするユーザーの作成
HPC ClusterではLDAPサーバがセットアップされています。
利用ユーザーをLDAPに登録します。
12. VCNのSecurity Listを修正
ログインノードがいるSubnetのSecurity Listに443ポートからの接続許可を追加します。
Source CIDRは例では0.0.0.0/0(すべてのIPからの接続を許可)していますが、状況に応じて正しく設定してください。
13. ログイン確認
ブラウザで以下のようにアクセスします。
https://<ログインノードのPublic IP>
以下のような画面になりますが、画面下部の132.145.xx.xxにアクセスする(安全ではありません)
をクリックします。
認証のポップアップが表示されるので、作成したLDAPのユーザー名とパスワードを入力します。
最後に
本記事で紹介した手順により、OCI上のHPCクラスターにOpen OnDemandを正常にインストールし、Slurmジョブの対話的操作やファイル管理機能をWebブラウザから利用できるようになりました。これにより、エンドユーザーはログインシェルを意識せずにジョブを投入・モニタリングできるほか、チーム内での共有やドキュメント化も容易になります。