

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 支持使用带有集群配置参数/的外部 Slurmdbd 进行Slurm记账。[SlurmSettings[ExternalSlurmdbd](Scheduling-v3.md#Scheduling-v3-SlurmSettings-ExternalSlurmdbd)](Scheduling-v3.md#Scheduling-v3-SlurmSettings)如果多个集群共享同一个数据库，建议使用外部 Slurmdbd。

通过 Slurm 会计，您可以集成外部会计数据库来执行以下操作：
+ 管理集群用户或用户组和其他实体。借助此功能，您可以使用更高级Slurm的功能，例如资源限制强制执行、公平共享和。 QOSs
+ 收集并保存作业数据，例如运行作业的用户、作业的持续时间及其使用的资源。您可以使用 `sacct` 实用工具查看保存的数据。

**注意**  
AWS ParallelCluster 支持对[Slurm支持的 MySQL 数据库服务器](https://slurm.schedmd.com/accounting.html#mysql-configuration)进行Slurm记账。

## Slurmdbd在 AWS ParallelCluster v3.10.0 及更高版本中使用外部使用Slurm记账
<a name="slurm-accounting-works-v3-later"></a>

在配置 Slurm 会计之前，必须有一个现有的外部 Slurmdbd 数据库服务器，该服务器可连接到现有的外部数据库服务器。

要对此进行配置，请定义以下内容：
+ [ExternalSlurmdbd](Scheduling-v3.md#Scheduling-v3-SlurmSettings-ExternalSlurmdbd)/[Host](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-ExternalSlurmdbd-Host) 中外部Slurmdbd服务器的地址。服务器必须存在并且可以从头节点访问。
+ 用于与外部Slurmdbd服务器通信的 munge 密钥。[MungeKeySecretArn](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-MungeKeySecretArn)

要查看分步教程，请参阅[使用外部集群创建集群 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_cn/parallelcluster/latest/ug/images/External_Slurmdbd_Architecture_ASG.png)

**警告**  
与外部 AWS ParallelCluster 之间的流量SlurmDB未加密。建议在可信网络中运行集群和外部 SlurmDB。

## Slurmdbd在 AWS ParallelCluster v3.3.0 及更高版本中使用头节点处理Slurm记账
<a name="slurm-accounting-works-v3"></a>

在配置 Slurm 会计之前，必须具有现有的外部数据库服务器和使用 `mysql` 协议的数据库。

要使用配置Slurm记账 AWS ParallelCluster，必须定义以下内容：
+ 在 [Database](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database)/[Uri](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-Database-Uri) 中定义的外部数据库服务器的 URI。服务器必须存在并且可以从头节点访问。
+ [访问数据库/ [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)。](Scheduling-v3.md#Scheduling-v3-SlurmSettings-Database) 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_cn/parallelcluster/latest/ug/images/slurm-acct-arch.png)

如果您要向集群环境中添加自定义 Slurm 多集群或联合身份验证功能，则所有集群都必须引用同一个 `slurmdbd` 实例。对于这种替代方案，我们建议您在一个集群上启用 AWS ParallelCluster Slurm记账，然后手动配置其他集群以连接到第一个集群上托管的集群。`slurmdbd`

如果您使用的是 3.3.0 之前的 AWS ParallelCluster 版本，请参阅此 [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 上部署数据库服务器，请考虑以下事项：
+ 要启用群集端和数据库服务器之间的通信，必须设置两者之间的连接 VPCs。`slurmdbd`有关更多信息，请参阅 *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>

如果服务器支持 TLS 加密，则使用 AWS ParallelCluster 提供的默认Slurm记账配置与数据库服务器`slurmdbd`建立 TLS 加密连接。 AWS 默认情况下，诸如 Amazon RDS 之类的数据库服务 Amazon Aurora 支持 TLS 加密。

通过在数据库服务器上设置 `require_secure_transport` 参数，可以在服务器端要求安全连接。这是在提供的 CloudFormation 模板中配置的。

根据安全性方面的最佳实践，我们建议您同时在 `slurmdbd` 客户端上启用服务器身份验证。为此，请在[StorageParameters](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageParameters)中配置`slurmdbd.conf`。将服务器 CA 证书上传到集群的头节点。接下来，将 `slurmdbd.conf` 中 `StorageParameters` 的 [SSL\_CA](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_SSL_CA) 选项设置为头节点上服务器 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)文档。