本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用獨立執行個體作為 AWS PCS登入節點
您可以設定獨立EC2執行個體來與 AWS PCS叢集的 Slurm 排程器互動。這對於建立使用 AWS PCS叢集但在管理之外 AWS PCS操作的登入節點、工作站或專用工作流程管理主機非常有用。若要這麼做,每個獨立執行個體都必須:
-
安裝相容的 Slurm 軟體版本。
-
能夠連線至 AWS PCS叢集的 Slurmctld 端點。
-
使用 AWS PCS叢集的端點和秘密正確設定 Slurm Auth 和 Cred Kiosk Daemon (
sackd
)。如需詳細資訊,請參閱 Slurm 文件中的封裝。
本教學課程可協助您設定連接至 AWS PCS叢集的獨立執行個體。
內容
步驟 1 – 擷取目標 AWS PCS叢集的地址和秘密
使用 擷取目標 AWS PCS叢集的詳細資訊, AWS CLI 並搭配以下命令。執行命令之前,請執行下列替換:
-
Replace (取代)
region-code
目標叢集執行 AWS 區域 所在的 。 -
Replace (取代)
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
)。 -
在應用程式和作業系統映像區段中,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連線
若要建立與叢集的 AWS PCS連線,請依照下列步驟以系統服務sackd
啟動 。
-
使用下列命令設定
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
確認與叢集的連線正在使用 Slurm 用戶端命令,例如 sinfo
和 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