

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

# Slurm 使用 會計 AWS ParallelCluster
<a name="slurm-accounting-v3"></a>

從 3.3.0 版開始， AWS ParallelCluster 支援使用叢集組態參數 [SlurmSettings](Scheduling-v3.md#Scheduling-v3-SlurmSettings)/[資料庫](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database)進行Slurm會計。

從 3.10.0 版開始， AWS ParallelCluster 支援使用叢集組態參數 [SlurmSettings](Scheduling-v3.md#Scheduling-v3-SlurmSettings) / ExternalSlurmdbd 的外部 Slurmdbd [ExternalSlurmdbd](Scheduling-v3.md#Scheduling-v3-SlurmSettings-ExternalSlurmdbd)進行Slurm會計。如果多個叢集共用相同的資料庫，建議使用外部 Slurmdbd。

透過 Slurm 會計，您可以整合外部會計資料庫來執行下列動作：
+ 管理叢集使用者或使用者群組和其他實體。透過此功能，您可以使用 Slurm更進階的功能，例如資源限制強制執行、公平共用和 QOSs。
+ 收集並儲存任務資料，例如執行任務的使用者、任務的持續時間及其使用的資源。您可以使用 `sacct`公用程式檢視儲存的資料。

**注意**  
AWS ParallelCluster 支援Slurm計算[Slurm支援的 MySQL 資料庫伺服器](https://slurm.schedmd.com/accounting.html#mysql-configuration)。

## 在 AWS ParallelCluster v3.10.0 和更新版本Slurmdbd中使用外部 進行Slurm會計
<a name="slurm-accounting-works-v3-later"></a>

設定Slurm會計之前，您必須擁有現有的外部Slurmdbd資料庫伺服器，該伺服器會連接到現有的外部資料庫伺服器。

若要設定此項，請定義下列項目：
+ [ExternalSlurmdbd](Scheduling-v3.md#Scheduling-v3-SlurmSettings-ExternalSlurmdbd)/[主機](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-ExternalSlurmdbd-Host)中外部Slurmdbd伺服器的地址。伺服器必須存在且可從前端節點連線。
+ 在 [MungeKeySecretArn](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-MungeKeySecretArn) 中與外部Slurmdbd伺服器通訊的 munge 金鑰。

若要逐步完成教學課程，請參閱 [使用外部Slurmdbd會計建立叢集](external-slurmdb-accounting.md)。

**注意**  
您負責管理Slurm資料庫會計實體。

 AWS ParallelCluster 外部SlurmDB支援功能的架構可啟用多個共用相同SlurmDB和相同資料庫的叢集。

 ![A flowchart depicting the Database Stack, Slurmdbd stack, PC Cluster Stack 1, and PC Cluster Stack 2. Containing components such as Slurmdbd instance, RDS Aurora MySQL Database, and Login nodes.](http://docs.aws.amazon.com/zh_tw/parallelcluster/latest/ug/images/External_Slurmdbd_Architecture_ASG.png)

**警告**  
 AWS ParallelCluster 與外部 之間的流量SlurmDB不會加密。建議在信任的網路SlurmDB中執行叢集和外部 。

## 在 AWS ParallelCluster v3.3.0 和更新Slurmdbd版本中使用前端節點進行Slurm會計
<a name="slurm-accounting-works-v3"></a>

設定Slurm會計之前，您必須擁有使用`mysql`通訊協定的現有外部資料庫伺服器和資料庫。

若要使用 設定Slurm會計 AWS ParallelCluster，您必須定義下列項目：
+ [資料庫](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database)/[Uri](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Database-Uri) 中外部資料庫伺服器的 URI。伺服器必須存在且可從前端節點連線。
+ 存取[資料庫](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database) / [PasswordSecretArn](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Database-PasswordSecretArn) 和[資料庫](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database) / [UserName](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Database-UserName) 中定義的外部資料庫的登入資料。 AWS ParallelCluster 會使用此資訊在 Slurm層級設定會計作業，並在前端節點上設定 `slurmdbd`服務。 `slurmdbd`是管理叢集與資料庫伺服器之間通訊的協助程式。

若要逐步完成教學課程，請參閱 [使用Slurm會計建立叢集](tutorials_07_slurm-accounting-v3.md)。

**注意**  
AWS ParallelCluster 透過將預設叢集使用者設定為Slurm資料庫中的資料庫管理員，執行Slurm會計資料庫的基本引導。 AWS ParallelCluster 不會將任何其他使用者新增至會計資料庫。客戶負責管理Slurm資料庫中的會計實體。

AWS ParallelCluster 設定 [https://slurm.schedmd.com/slurmdbd.html](https://slurm.schedmd.com/slurmdbd.html) 以確保叢集在Slurm資料庫伺服器上擁有自己的資料庫。相同的資料庫伺服器可以跨多個叢集使用，但每個叢集都有自己的個別資料庫。 AWS ParallelCluster 會使用叢集名稱在`slurmdbd`組態檔案[https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageLoc](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageLoc)參數中定義資料庫的名稱。請考慮下列情況。資料庫伺服器上存在的資料庫包含未對應至作用中叢集名稱的叢集名稱。在此情況下，您可以使用該叢集名稱建立新的叢集，以對應至該資料庫。 會為新叢集Slurm重複使用資料庫。

**警告**  
我們不建議同時設定多個叢集來使用相同的資料庫。這樣做可能會導致效能問題，甚至是資料庫死結情況。
如果在叢集的前端節點上啟用Slurm會計，我們建議您使用具有強大 CPU、更多記憶體和更高網路頻寬的執行個體類型。 Slurm 會計可能會對叢集的前端節點增加壓力。

在會計功能的目前架構中 AWS ParallelCluster Slurm，每個叢集都有自己的`slurmdbd`協助程式執行個體，如下圖範例組態所示。

 ![A configuration with two clusters that are connected to a MySQL server. Each cluster has their own slurmdbd daemon instance. Moreover, each cluster is connected to its own database through the server. Another configuration with a single cluster that has its own slurmdbd daemon instance. This configuration is connected to a MySQL server and is also connected to its own database through the server.](http://docs.aws.amazon.com/zh_tw/parallelcluster/latest/ug/images/slurm-acct-arch.png)

如果您要將自訂Slurm多叢集或聯合功能新增至叢集環境，則所有叢集都必須參考相同的`slurmdbd`執行個體。對於此替代方案，我們建議您在一個叢集上啟用 AWS ParallelCluster Slurm會計，並手動設定其他叢集以連線到在第一個叢集上託管`slurmdbd`的 。

如果您使用的 AWS ParallelCluster 是 3.3.0 版之前的版本，請參閱本 [HPC 部落格文章](https://aws.amazon.com/blogs/compute/enabling-job-accounting-for-hpc-with-aws-parallelcluster-and-amazon-rds/)中所述的實作Slurm會計的替代方法。

## Slurm 會計考量
<a name="slurm-accounting-considerations-v3"></a>

### 不同 VPCs上的資料庫和叢集
<a name="slurm-accounting-considerations-different-vpcs-v3"></a>

若要啟用Slurm會計，資料庫伺服器需要做為`slurmdbd`協助程式執行的讀取和寫入操作的後端。在建立或更新叢集以啟用Slurm會計之前，前端節點必須能夠連線到資料庫伺服器。

如果您需要在叢集使用的 VPC 以外的 VPC 上部署資料庫伺服器，請考慮下列事項：
+ 若要在叢集端`slurmdbd`的 與資料庫伺服器之間啟用通訊，您必須在兩個 VPCs之間設定連線。如需詳細資訊，請參閱《*Amazon Virtual Private Cloud 使用者指南*》中的 [VPC 對等](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)互連。
+ 您必須建立要連接到叢集 VPC 上前端節點的安全群組。在兩個 VPCs 對等互連之後，即可在資料庫端和叢集端安全群組之間進行交叉連結。如需詳細資訊，請參閱《*Amazon Virtual Private Cloud 使用者指南*》中的[安全群組規則](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules)。

### 在 `slurmdbd`和資料庫伺服器之間設定 TLS 加密
<a name="slurm-accounting-considerations-tls-config-v3"></a>

使用 AWS ParallelCluster 提供的預設Slurm會計組態，如果伺服器支援 TLS encryption. AWS database 服務，例如 Amazon RDS，且預設 Amazon Aurora 支援 TLS 加密，則 會`slurmdbd`建立與資料庫伺服器的 TLS 加密連線。

您可以在資料庫伺服器上設定 `require_secure_transport` 參數，在伺服器端要求安全連線。這是在提供的 CloudFormation 範本中設定。

遵循安全最佳實務，我們建議您也在`slurmdbd`用戶端上啟用伺服器身分驗證。若要這樣做，請在 中設定 [StorageParameters](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageParameters)`slurmdbd.conf`。將伺服器 CA 憑證上傳至叢集的前端節點。接著，將 `StorageParameters`中的 [SSL\_CA](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_SSL_CA) 選項`slurmdbd.conf`設定為前端節點上伺服器 CA 憑證的路徑。這樣做可在 `slurmdbd` 端啟用伺服器身分驗證。進行這些變更後，請重新啟動 `slurmdbd`服務，在啟用身分驗證的情況下重新建立與資料庫伺服器的連線。

### 更新資料庫登入資料
<a name="slurm-accounting-considerations-updates-v3"></a>

若要更新[資料庫](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database)/[UserName](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Database-UserName)或 [PasswordSecretArn](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Database-PasswordSecretArn) 的值，您必須先停止運算機群。假設存放在秘密中的 AWS Secrets Manager 秘密值已變更，且其 ARN 不會變更。在這種情況下，叢集不會自動將資料庫密碼更新為新值。若要更新叢集的新秘密值，請從前端節點執行下列命令。

```
$ sudo /opt/parallelcluster/scripts/slurm/update_slurm_database_password.sh
```

**警告**  
為了避免遺失會計資料，建議您只在運算機群停止時變更資料庫密碼。

### 資料庫監控
<a name="slurm-accounting-considerations-updates-monitoring-v3"></a>

建議您啟用 AWS 資料庫服務的監控功能。如需詳細資訊，請參閱 [Amazon RDS 監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html)或 [Amazon Aurora 監控](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/MonitoringAurora.html)文件。