翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ログインノードとしての AWS PCSスタンドアロンインスタンスの使用
クラスターの Slurm スケジューラと AWS PCS対話するように、独立したEC2インスタンスを設定できます。これは、クラスターと AWS PCS連携するが、管理外で AWS PCS動作するログインノード、ワークステーション、または専用ワークフロー管理ホストを作成するのに役立ちます。これを行うには、各スタンドアロンインスタンスが以下を実行する必要があります。
-
互換性のある Slurm ソフトウェアバージョンをインストールします。
-
クラスターの AWS PCS Slurmctld エンドポイントに接続できるようにします。
-
Slurm Auth と Cred Kiosk Daemon (
sackd
) を AWS PCSクラスターのエンドポイントとシークレットで適切に設定します。詳細については、「Slurm ドキュメント」の「sackd」を参照してください。
このチュートリアルは、クラスターに接続する AWS PCS独立したインスタンスを設定するのに役立ちます。
目次
ステップ 1 – ターゲット AWS PCSクラスターのアドレスとシークレットを取得する
次のコマンド AWS CLI を使用して、 を使用してターゲット AWS PCSクラスターの詳細を取得します。コマンドを実行する前に、次の置き換えを行います。
-
置換
region-code
ターゲットクラスター AWS リージョン が実行されている を使用します。 -
置換
cluster-ident
ターゲットクラスターの名前または識別子を含む
aws pcs get-cluster --region
region-code
--cluster-identifiercluster-ident
コマンドは、この例のような出力を返します。
{ "cluster": { "name": "get-started", "id": "pcs_123456abcd", "arn": "arn:aws:pcs:us-east-1:111122223333:cluster/pcs_123456abcd", "status": "ACTIVE", "createdAt": "2024-09-23T21:03:52+00:00", "modifiedAt": "2024-09-23T21:03:52+00:00", "scheduler": { "type": "SLURM", "version": "23.11" }, "size": "SMALL", "slurmConfiguration": { "authKey": { "secretArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:pcs!slurm-secret-pcs_123456abcd-a12ABC", "secretVersion": "ef232370-d3e7-434c-9a87-ec35c1987f75" } }, "networking": { "subnetIds": [ "subnet-0123456789abcdef0" ], "securityGroupIds": [ "sg-0123456789abcdef0" ] }, "endpoints": [ { "type": "SLURMCTLD", "privateIpAddress": "10.3.149.220", "port": "6817" } ] } }
このサンプルでは、クラスター Slurm コントローラーエンドポイントの IP アドレスは 10.3.149.220
で、ポート で実行されています6817
。secretArn
は、クラスターシークレットを取得するために後のステップで使用されます。IP アドレスとポートは、後のステップでsackd
サービスを設定するために使用されます。
ステップ 2 – EC2インスタンスを起動する
EC2 インスタンスを起動するには
-
Amazon EC2コンソール
を開きます。 -
ナビゲーションペインで、[Instances] (インスタンス) を選択し、[Launch Instances] (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。
-
(オプション) 名前とタグ セクションで、 などのインスタンスの名前を指定します
PCS-LoginNode
。指定した名前は、リソースタグとしてインスタンスに割り当てられます (Name=PCS-LoginNode
)。 -
Application and OS Images セクションで、 でサポートされているオペレーティングシステムの AMI を選択します AWS PCS。詳細については、「サポートされるオペレーティングシステム」を参照してください。
-
インスタンスタイプ セクションで、サポートされているインスタンスタイプを選択します。詳細については、「サポートされるインスタンスタイプ」を参照してください。
-
キーペアセクションで、インスタンスに使用するSSHキーペアを選択します。
-
ネットワーク設定セクションで、次の操作を行います。
-
[編集] を選択します。
-
クラスターVPCの を選択します AWS PCS。
-
[ファイアウォール (セキュリティグループ)] で、[既存のセキュリティグループを選択する] を選択します。
-
インスタンスとターゲット AWS PCSクラスターの Slurm コントローラー間のトラフィックを許可するセキュリティグループを選択します。詳細については、「セキュリティグループの要件と考慮事項」を参照してください。
-
(オプション) インスタンスへのインバウンドSSHアクセスを許可するセキュリティグループを選択します。
-
-
-
-
ストレージセクションで、必要に応じてストレージボリュームを設定します。アプリケーションとライブラリをインストールしてユースケースを有効にするのに十分なスペースを設定してください。
-
詳細 で、クラスターシークレットへのアクセスを許可するIAMロールを選択します。詳細については、「Slurm クラスターシークレットを取得する」を参照してください。
-
概要ペインで、インスタンス を起動を選択します。
ステップ 3 – インスタンスに Slurm をインストールする
インスタンスが起動してアクティブになったら、任意のメカニズムを使用してインスタンスに接続します。が提供する Slurm インストーラ AWS を使用して、インスタンスに Slurm をインストールします。詳細については、「Slurm インストーラ」を参照してください。
Slurm インストーラをダウンロードして解凍し、installer.sh
スクリプトを使用して Slurm をインストールします。詳細については、「ステップ 3 – Slurm をインストールする」を参照してください。
ステップ 4 – クラスターシークレットを取得して保存する
これらの手順には、 が必要です AWS CLI。詳細については、「 バージョン 2 ユーザーガイド」の「 の最新バージョンへのインストールまたは更新 AWS CLIAWS Command Line Interface 」を参照してください。
次のコマンドを使用して、クラスターシークレットを保存します。
-
Slurm の設定ディレクトリを作成します。
sudo mkdir -p /etc/slurm
-
クラスターシークレットを取得、デコード、保存します。このコマンドを実行する前に、
region-code
ターゲットクラスターが実行されているリージョンで を置き換えます。secret-arn
ステップ 1 でsecretArn
取得した の値。sudo aws secretsmanager get-secret-value \ --region
region-code
\ --secret-id'secret-arn'
\ --version-stage AWSCURRENT \ --query'SecretString'
\ --output text | base64 -d > /etc/slurm/slurm.key警告
マルチユーザー環境では、インスタンスにアクセスできるすべてのユーザーがインスタンスメタデータサービス () にアクセスできる場合、クラスターシークレットを取得できる場合がありますIMDS。これにより、他のユーザーになりすますことができます。へのアクセスIMDSをルートユーザーまたは管理者ユーザーのみに制限することを検討してください。または、インスタンスプロファイルに依存しない別のメカニズムを使用してシークレットを取得および設定することを検討してください。
-
Slurm キーファイルに所有権とアクセス許可を設定します。
sudo chmod 0600 /etc/slurm/slurm.key sudo chown slurm:slurm /etc/slurm/slurm.key
注記
Slurm キーは、
sackd
サービスを実行するユーザーとグループによって所有されている必要があります。
ステップ 5 – クラスターへの接続 AWS PCSを設定する
クラスターへの接続を確立するには、以下の手順に従ってシステムサービスsackd
として を起動します AWS PCS。
-
次のコマンドを使用して、
sackd
サービスの環境ファイルを設定します。コマンドを実行する前に、ip-address
また、port
ステップ 1 でエンドポイントから取得した値。sudo echo "SACKD_OPTIONS='--conf-server=
ip-address
:port
'" > /etc/sysconfig/sackd -
sackd
プロセスを管理するためのsystemd
サービスファイルを作成します。sudo cat << EOF > /etc/systemd/system/sackd.service [Unit] Description=Slurm auth and cred kiosk daemon After=network-online.target remote-fs.target Wants=network-online.target ConditionPathExists=/etc/sysconfig/sackd [Service] Type=notify EnvironmentFile=/etc/sysconfig/sackd User=slurm Group=slurm RuntimeDirectory=slurm RuntimeDirectoryMode=0755 ExecStart=/opt/aws/pcs/scheduler/slurm-23.11/sbin/sackd --systemd \$SACKD_OPTIONS ExecReload=/bin/kill -HUP \$MAINPID KillMode=process LimitNOFILE=131072 LimitMEMLOCK=infinity LimitSTACK=infinity [Install] WantedBy=multi-user.target EOF
-
sackd
サービスファイルの所有権を設定します。sudo chown root:root /etc/systemd/system/sackd.service && \ sudo chmod 0644 /etc/systemd/system/sackd.service
-
sackd
サービスを有効にします。sudo systemctl daemon-reload && sudo systemctl enable sackd
-
sackd
サービスを開始します。sudo systemctl start sackd
ステップ 6 – (オプション) 接続をテストする
sackd
サービスが実行されていることを確認します。サンプル出力を次に示します。エラーがある場合、通常はここに表示されます。
[root@ip-10-3-27-112 ~]# systemctl status sackd [x] sackd.service - Slurm auth and cred kiosk daemon Loaded: loaded (/etc/systemd/system/sackd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2024-07-16 16:34:55 UTC; 8s ago Main PID: 9985 (sackd) CGroup: /system.slice/sackd.service └─9985 /opt/aws/pcs/scheduler/slurm-23.11/sbin/sackd --systemd --conf-server=10.3.149.220:6817 Jul 16 16:34:55 ip-10-3-27-112.ec2.internal systemd[1]: Starting Slurm auth and cred kiosk daemon... Jul 16 16:34:55 ip-10-3-27-112.ec2.internal systemd[1]: Started Slurm auth and cred kiosk daemon. Jul 16 16:34:55 ip-10-3-27-112.ec2.internal sackd[9985]: sackd: running
クラスターへの接続が sinfo
や などの Slurm クライアントコマンドを使用して動作していることを確認しますsqueue
。からの出力例を次に示しますsinfo
。
[root@ip-10-3-27-112 ~]# /opt/aws/pcs/scheduler/slurm-23.11/bin/sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST all up infinite 4 idle~ compute-[1-4]
ジョブを送信することもできます。例えば、この例のようなコマンドは、クラスター内の 1 つのノードでインタラクティブジョブを起動します。
/opt/aws/pcs/scheduler/slurm-23.11/bin/srun --nodes=1 -p all --pty bash -i