使用獨立執行個體作為 AWS PCS登入節點 - AWS PCS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用獨立執行個體作為 AWS PCS登入節點

您可以設定獨立EC2執行個體來與 AWS PCS叢集的 Slurm 排程器互動。這對於建立使用 AWS PCS叢集但在管理之外 AWS PCS操作的登入節點、工作站或專用工作流程管理主機非常有用。若要這麼做,每個獨立執行個體都必須:

  1. 安裝相容的 Slurm 軟體版本。

  2. 能夠連線至 AWS PCS叢集的 Slurmctld 端點。

  3. 使用 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-identifier cluster-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且正在連接埠 上執行6817secretArn 將在稍後的步驟中使用 來擷取叢集秘密。IP 地址和連接埠將在稍後的步驟中使用,以設定sackd服務。

步驟 2 – 啟動EC2執行個體

啟動 EC2 執行個體
  1. 開啟 Amazon EC2主控台

  2. 在導覽窗格中,選擇 Instances (執行個體),接著選擇 Launch Instances (啟動執行個體) 來開啟新的啟動執行個體精靈。

  3. (選用) 在名稱和標籤區段中,提供執行個體的名稱,例如 PCS-LoginNode。該名稱將指派作為執行個體的資源標籤 (Name=PCS-LoginNode)。

  4. 應用程式和作業系統映像區段中,AMI為 支援的其中一個作業系統選取 AWS PCS。如需詳細資訊,請參閱支援的作業系統

  5. 執行個體類型區段中,選取支援的執行個體類型。如需詳細資訊,請參閱支援的執行個體類型

  6. 金鑰對區段中,選取要用於執行個體的SSH金鑰對。

  7. 網路設定區段中:

    1. 選擇編輯

      1. 選取叢集VPC AWS PCS的 。

      2. 針對防火牆 (安全群組),選擇選取現有的安全群組

        1. 選取允許執行個體與目標 AWS PCS叢集 Slurm 控制器之間的流量的安全群組。如需詳細資訊,請參閱安全群組需求和考量事項

        2. (選用) 選取允許傳入SSH存取執行個體的安全群組。

  8. 儲存區段中,視需要設定儲存磁碟區。請務必設定足夠的空間來安裝應用程式和程式庫,以啟用您的使用案例。

  9. 進階 下,選擇允許存取叢集秘密IAM的角色。如需詳細資訊,請參閱取得 Slurm 叢集秘密

  10. 摘要窗格中,選擇啟動執行個體

步驟 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啟動 。

  1. 使用下列命令設定sackd服務的環境檔案。在執行命令之前,請取代 ip-address 以及 port 以及步驟 1 中從端點擷取的值。

    sudo echo "SACKD_OPTIONS='--conf-server=ip-address:port'" > /etc/sysconfig/sackd
  2. 建立用於管理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
  3. 設定sackd服務檔案的擁有權。

    sudo chown root:root /etc/systemd/system/sackd.service && \ sudo chmod 0644 /etc/systemd/system/sackd.service
  4. 啟用 sackd服務。

    sudo systemctl daemon-reload && sudo systemctl enable sackd
  5. 啟動 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 用戶端命令,例如 sinfosqueue。以下是來自 的範例輸出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