

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

# 扩展 Session Manager
<a name="scaling"></a>

为了实现高可用性并提高性能，您可以将 Session Manager 配置为使用多个 Agent 和 Broker。如果您确实打算使用多个代理和代理，我们建议您仅安装和配置一个代理和代理主机，从这些主机创建 Amazon Machines Images (AMI)，然后从中启动其余主机 AMIs。

默认情况下，Session Manager 支持使用多个 Agent，而无需进行任何额外的配置。不过，如果您打算使用多个 Broker，您必须使用负载均衡器均衡前端客户端和 Broker 之间的流量以及 Broker 和 Agent 之间的流量。负载均衡器的设置和配置完全由您拥有和管理。

下一节介绍了如何配置 Session Manager 以将多个主机与 Application Load Balancer 一起使用。

**Topics**
+ [步骤 1：创建实例配置文件](#create-profile)
+ [步骤 2：为负载均衡器准备 SSL 证书](#create-cert)
+ [步骤 3：创建 Broker Application Load Balancer](#create-broker-alb)
+ [步骤 4：启动 Broker](#launch-brokers)
+ [步骤 5：创建 Agent Application Load Balancer](#create-agent-alb)
+ [步骤 6：启动 Agent](#launch-agents)

## 步骤 1：创建实例配置文件
<a name="create-profile"></a>

您必须将实例配置文件附加到授予其使用 Elastic Load Balancing 权限的代理和代理主机 APIs。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Amazon EC2 的 IAM 角色](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。

**创建实例配置文件**

1. 创建一个 Amazon Identity and Access Management (IAM) 角色来定义要在实例配置文件中使用的权限。使用以下信任策略：

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "ec2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

   然后，附加以下策略：

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "ec2:DescribeInstances"
         ],
         "Effect": "Allow",
         "Resource": "*"
       },
       {
         "Action": [
           "elasticloadbalancing:DescribeTargetHealth"
         ],
         "Effect": "Allow",
         "Resource": "*"
       }
     ]
   }
   ```

------

   有关更多信息，请参阅《IAM 用户指南》中的[创建 IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-cli)。**

1. 创建一个新的实例配置文件。有关更多信息，请参阅《Amazon CLI 命令参考》**中的 [create-instance-profile](https://docs.amazonaws.cn/cli/latest/reference/iam/create-instance-profile.html)。

1. 将 IAM 角色添加到实例配置文件。有关更多信息，请参阅《*Amazon CLI 命令参考*》中的 [add-role-to-instance-pro](https://docs.amazonaws.cn/cli/latest/reference/iam/add-role-to-instance-profile.html) file。

1. 将该实例配置文件附加到 Broker 主机。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[将 IAM 角色附加到实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)。

## 步骤 2：为负载均衡器准备 SSL 证书
<a name="create-cert"></a>

当您对负载均衡器侦听器使用 HTTPS 时，必须在负载均衡器上部署 SSL 证书。负载均衡器先使用此证书终止连接，然后解密来自客户端的请求，最后再将请求发送到目标。

**准备 SSL 证书**

1. 创建私有证书颁发机构 (CA) Certif Amazon ice Manager 私有证书颁发机构 (ACM PCA)。有关更多信息，请参阅《Certif [ice *Manager 私有 Amazon 证书颁发机构用户指南》*中的创建 CA 的程序](https://docs.amazonaws.cn/acm-pca/latest/userguide/PcaCreateCa.html#CA-procedures)。

1. 安装该 CA。有关更多信息，请参阅 [Certificate Manager 私有 Amazon 证书颁发机构用户指南中的安装根 CA](https://docs.amazonaws.cn/acm-pca/latest/userguide/PCACertInstall.html#InstallRoot) *证书*。

1. 申请由该 CA 签名的新私有证书。对于域名，请使用 `*.{{region}}.elb.amazonaws.com` 并指定您打算在其中创建负载均衡器的区域。有关更多信息，请参阅 Cer [tificate *Manager 私有 Amazon 证书颁发机构用户指南*中的申请](https://docs.amazonaws.cn/acm/latest/userguide/gs-acm-request-private.html#request-private-console)私有证书。

## 步骤 3：创建 Broker Application Load Balancer
<a name="create-broker-alb"></a>

创建一个 Application Load Balancer 以均衡前端客户端和 Broker 之间的流量。

**创建负载均衡器**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

   在导航窗格中，选择**负载均衡器**，然后选择**创建负载均衡器**。对于负载均衡器类型，选择 **Application Load Balancer**。

1. 对于**步骤 1：配置负载均衡器**，执行以下操作：

   1. 对于**名称**，输入负载均衡器的描述性名称。

   1. 对于**模式**，选择**面向互联网**。

   1. 对于**负载均衡器协议**，选择 **HTTPS**；对于**负载均衡器端口**，输入 `8443`。

   1. 对于 **VPC**，选择要使用的 VPC，然后选择该 VPC 中的所有子网。

   1. 选择**下一步**。

1. 对于**步骤 2: 配置安全设置**，请执行以下操作：

   1. 对于**证书类型**，选择**从 ACM 中列表中选择证书**。

   1. 对于**证书名称**，选择您以前申请的私有证书。

   1. 选择**下一步**。

1. 对于**步骤 3: 配置安全组**，创建新的安全组或选择现有的安全组，以允许在前端客户端和 Broker 之间通过 HTTPS 和端口 8443 传输入站和出站流量。

   选择**下一步**。

1. 对于**步骤 4: 配置路由**，请执行以下操作：

   1. 对于**目标组**，选择**新建目标组**。

   1. 对于**名称**，输入目标组的名称。

   1. 对于**目标类型**，选择**实例**。

   1. 对于**协议**，选择 **HTTPS**。对于**端口**，输入 `8443`。对于**协议版本**，选择**HTTP1**。

   1. 对于运行状况检查**协议**，选择 HTTPS；对于**路径**，输入 `/health`。

   1. 选择**下一步**。

1. 对于**步骤 5: 注册目标**，选择**下一步**。

1. 选择**创建**。

## 步骤 4：启动 Broker
<a name="launch-brokers"></a>

创建一个初始 Broker 并将其配置为使用负载均衡器，从该 Broker 中创建一个 AMI，然后使用该 AMI 启动其余 Broker。这确保所有 Broker 都配置为使用相同的 CA 和相同的负载均衡器配置。

**启动 Broker**

1. 启动并配置初始 Broker 主机。有关安装和配置 Broker 的更多信息，请参阅[步骤 2：设置 Amazon DCV Session Manager Broker](broker.md)。
**注意**  
由于我们使用 Application Load Balancer，因此，不需要使用 Broker 的自签名证书。

1. 连接到 Broker，使用常用的文本编辑器打开 `/etc/dcv-session-manager-broker/session-manager-broker.properties`，然后执行以下操作：

   1. 在行首放置井号（\#）以注释掉 `broker-to-broker-discovery-addresses` 参数。

   1. 对于 `broker-to-broker-discovery-aws-region`，输入您在其中创建 Application Load Balancer 的区域。

   1. 对于 `broker-to-broker-discovery-aws-alb-target-group-arn`，输入与 Broker 负载均衡器关联的目标组的 ARN。

   1. 保存并关闭 文件。

1. 停止 Broker 实例。

1. 从停止的 Broker 实例中创建一个 AMI。有关更多信息，请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的[从实例创建 Linux AMI](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html#how-to-create-ebs-ami)。**

1. 使用该 AMI 启动其余 Broker。

1. 将您创建的实例配置文件分配给所有 Broker 实例。

1. 分配一个安全组，以允许将 Broker 到 Broker 的网络流量以及 Broker 到负载均衡器的网络流量传输到所有 Broker 实例。有关网络端口的更多信息，请参阅 [Broker 配置文件](https://docs.amazonaws.cn/dcv/latest/sm-admin/broker-file.html)。

1. 将所有 Broker 实例注册为 Broker 负载均衡器的目标。有关更多信息，请参阅《Application Load Balancer 用户指南》中的[向您的目标组注册目标](https://docs.amazonaws.cn/elasticloadbalancing/latest/application/target-group-register-targets.html)。**

## 步骤 5：创建 Agent Application Load Balancer
<a name="create-agent-alb"></a>

创建一个 Application Load Balancer 以均衡 Agent 和 Broker。

**创建负载均衡器**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

   在导航窗格中，选择**负载均衡器**，然后选择**创建负载均衡器**。对于负载均衡器类型，选择 **Application Load Balancer**。

1. 对于**步骤 1：配置负载均衡器**，执行以下操作：

   1. 对于**名称**，输入负载均衡器的描述性名称。

   1. 对于**模式**，选择**面向互联网**。

   1. 对于**负载均衡器协议**，选择 **HTTPS**；对于**负载均衡器端口**，输入 `8445`。

   1. 对于 **VPC**，选择要使用的 VPC，然后选择该 VPC 中的所有子网。

   1. 选择**下一步**。

1. 对于**步骤 2: 配置安全设置**，请执行以下操作：

   1. 对于**证书类型**，选择**从 ACM 中列表中选择证书**。

   1. 对于**证书名称**，选择您以前申请的私有证书。

   1. 选择**下一步**。

1. 对于**步骤 3: 配置安全组**，创建新的安全组或选择现有的安全组，以允许在 Agent 和 Broker 之间通过 HTTPS 和端口 8445 传输入站和出站流量。

   选择**下一步**。

1. 对于**步骤 4: 配置路由**，请执行以下操作：

   1. 对于**目标组**，选择**新建目标组**。

   1. 对于**名称**，输入目标组的名称。

   1. 对于**目标类型**，选择**实例**。

   1. 对于**协议**，选择 **HTTPS**。对于**端口**，输入 `8445`。对于**协议版本**，选择**HTTP1**。

   1. 对于运行状况检查**协议**，选择 **HTTPS**；对于**路径**，输入 `/health`。

   1. 选择**下一步**。

1. 对于**步骤 5: 注册目标**，选择所有 Broker 实例并选择**添加到已注册**。选择**下一步：审核**。

1. 选择**创建**。

## 步骤 6：启动 Agent
<a name="launch-agents"></a>

创建一个初始 Agent 并将其配置为使用负载均衡器，从该 Agent 中创建一个 AMI，然后使用该 AMI 启动其余 Agent 这确保所有 Agent 都配置为使用相同的负载均衡器配置。

**启动 Agent**

1. 准备 Amazon DCV 服务器。有关更多信息，请参阅 [步骤 1：准备 Amazon DCV 服务器](servers.md)。

1. 放置在[步骤 2：为负载均衡器准备 SSL 证书](#create-cert)中创建的 CA 公有密钥的副本。选择或创建一个任何用户都可以读取的目录。CA 公有密钥文件也必须可供任何用户读取。

1. 安装并配置 Agent。有关安装和配置 Agent 的更多信息，请参阅[步骤 3：设置 Amazon DCV Session Manager Agent](agent.md)。
**重要**  
在修改 Agent 配置文件时：  
对于 `broker_host` 参数，输入 Agent 负载均衡器的 DNS
对于 `ca_file` 参数，输入在上一步中创建的 CA 公有密钥文件的路径

1. 配置 Amazon DCV 服务器以将 Broker 作为身份验证服务器。有关更多信息，请参阅 [步骤 4：配置 Amazon DCV 服务器以将 Broker 作为身份验证服务器](configure-dcv-server.md)。
**重要**  
在修改 Amazon DCV 服务器配置文件时：  
对于 `ca-file` 参数，输入上一步中使用的 CA 公有密钥文件的相同路径
对于`auth-token-verifier`参数，请使用代理负载均衡器的 DNS {{broker\_ip\_or\_dns}}

1. 停止 Agent 实例。

1. 从停止的 Agent 实例中创建一个 AMI。有关更多信息，请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的[从实例创建 Linux AMI](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html#how-to-create-ebs-ami)。**

1. 使用该 AMI 启动其余 Agent，并将您创建的实例配置文件分配给所有这些 Agent。

1. 分配一个安全组，以允许将 Agent 到负载均衡器的网络流量传输到所有 Agent 实例。有关网络端口的更多信息，请参阅 [Agent 配置文件](https://docs.amazonaws.cn/dcv/latest/sm-admin/agent-file.html)。