

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

# 配置 Broker 持久性
<a name="configure-broker-persistence"></a>

Session Manager Broker 支持与外部数据库集成在一起。Session Manager 可以在外部数据库中持久保留状态数据和密钥，以便以后使用这些数据和密钥。事实上，Broker 数据分布在集群上，如果一个主机需要重新引导或终止了集群，则很容易丢失数据。在启用该功能后，您可以添加和删除 Broker 节点。此外，您可以停止并重新启动集群，而无需重新生成密钥或丢失有关打开或关闭的 Amazon DCV 服务器的信息。

可以将以下类型的信息设置为持久保留：
+ 用于设置会话以与客户端建立连接的密钥
+ 正在传输的会话数据
+ Amazon DCV 服务器状态

Amazon DCV Session Manager 支持 DynamoDB、MariaDB 和 MySQL 数据库。您必须设置和管理这些数据库之一才能使用该功能。如果在 Amazon EC2 上托管您的 Broker 计算机，我们建议将 DynamoDB 作为外部数据库，因为它不需要进行任何额外的设置。

**注意**  
在运行外部数据库时，您可能会产生额外费用。要查看有关 DynamoDB 定价的信息，请参阅[预置容量的定价](https://aws.amazon.com/dynamodb/pricing/provisioned/)。

## 配置 Broker 以在 DynamoDB 上持久保留数据
<a name="persistence-dynamodb"></a>

配置 Broker 以开始在 DynamoDB 上存储其数据：

1. 使用常用的文本编辑器打开 `/etc/dcv-session-manager-broker/session-manager-broker.properties` 并进行以下编辑：
   + Set `enable-persistence = true`
   + Set `persistence-db = dynamodb`
   + 对于 `dynamodb-region`，指定您希望存储包含 Broker 数据的表的 &aws; 区域。有关支持的区域列表，请参阅 [DynamoDB service endpoints](https://docs.aws.amazon.com/general/latest/gr/ddb.html)。
   + 对于 `dynamodb-table-rcu`，指定每个表支持的读取容量单位（RCU）数量。有关 RCU 的更多信息，请参阅 [DynamoDB 预置容量](https://aws.amazon.com/dynamodb/pricing/provisioned)。
   + 对于 `dynamodb-table-wcu`，指定每个表支持的写入容量单位（WCU）数量。有关 WCU 的更多信息，请参阅 [DynamoDB 预置容量](https://aws.amazon.com/dynamodb/pricing/provisioned)。
   + 对于 dynamodb-table-name-prefix，指定添加到每个 DynamoDB 表的前缀（用于区分使用同一账户的多个 Broker 集群）。仅允许使用字母数字字符、圆点、短划线和下划线。

1. 停止集群中的所有 Broker。对于每个 Broker，运行以下命令：

   ```
   sudo systemctl stop dcv-session-manager-broker
   ```

1. 确保集群中的所有 Broker 已停止，然后重新启动所有 Broker。运行以下命令以启动每个 Broker：

   ```
   sudo systemctl start dcv-session-manager-broker
   ```

Broker 主机必须有权调用 DynamoDB API。在 Amazon EC2 实例上，凭证是使用 Amazon EC2 元数据服务自动检索的。如果需要指定不同的凭证，您可以使用支持的凭证检索技术之一（例如 Java 系统属性或环境变量）设置这些凭证。有关更多信息，请参阅 [Supplying and Retrieving &aws; Credentials](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html#credentials-profiles)。

## 配置 Broker 以在 MariaDB/MySQL 上持久保留数据
<a name="persistence-mysql"></a>

**注意**  
`/etc/dcv-session-manager-broker/session-manager-broker.properties` 文件包含敏感数据。默认情况下，其写入访问权限限制为根用户，其读取访问权限限制为根用户和运行 Broker 的用户。默认情况下，这是 `dcvsmbroker` 用户。Broker 在启动时检查文件是否具有预期的权限。

配置 Broker 以开始在 MariaDB/MySQL 上持久保留其数据：

1. 使用常用的文本编辑器打开 `/etc/dcv-session-manager-broker/session-manager-broker.properties` 并进行以下编辑：
   + Set `enable-persistence = true`
   + Set `persistence-db = mysql`
   + Set `jdbc-connection-url = jdbc:mysql://{{<db_endpoint>}}:{{<db_port>}}/{{<db_name>}}?createDatabaseIfNotExist=true`

     在该配置中，<db\_endpoint> 是数据库终端节点，<db\_port> 是数据库端口，<db\_name> 是数据库名称。
   + 对于 `jdbc-user`，指定有权访问数据库的用户的名称。
   + 对于 `jdbc-password`，指定有权访问数据库的用户的密码。

1. 停止集群中的所有 Broker。对于每个 Broker，运行以下命令：

   ```
   sudo systemctl stop dcv-session-manager-broker
   ```

1. 确保集群中的所有 Broker 已停止，然后重新启动所有 Broker。对于每个 Broker，运行以下命令：

   ```
   sudo systemctl start dcv-session-manager-broker
   ```