Esri arcgis-server-ha.template.json Amazon Web Services (AWS) CloudFormation 模板可创建高可用性 GIS Server 站点、ArcGIS Image Server 站点或 ArcGIS GeoAnalytics Server 站点。 如果要创建 ArcGIS GeoAnalytics Server 站点,您必须将其联合到 ArcGIS Enterprise 门户。 您可以联合其他类型或作为独立站点使用。
此模板在 AWS 自动伸缩组中配置 ArcGIS Server Amazon Elastic Compute Cloud (EC2) 实例,可提供一定的优势,例如基于特定标准的容量规划、更强的容错性、更高的可用性以及更好的成本管理。
使用此模板时,为 ArcGIS Server 目录存储选择以下选项之一:
- 为配置存储使用云存储(Amazon S3 和 DynamoDB),并为共享目录使用文件共享(EC2 实例)
- 仅将配置存储和共享目录置于文件服务器(EC2 实例)中。
系统已经为文件服务器设置自动恢复;即使一台计算机故障,服务仍然可用。
您也可以在各个 ArcGIS Server 计算机中包括 ArcGIS Web Adaptor。
此模板可在 Amazon Web Services 中创建以下架构:
许可:
示意图中的某些图标需在得到 Amazon Web Services 权限后方可使用。
先决条件
先决条件可以按照您必须获取的项目(例如文件和帐户)以及在运行 CloudFormation 模板之前必须执行的任务来进行分组。
必需项目
运行此模板之前,您需要以下内容:
- Amazon Web Services 帐户。
帐户必须可以访问基础 AWS 服务(例如 CloudFormation、Amazon Elastic Compute Cloud (EC2)、Amazon Virtual Private Cloud (VPC)、Amazon Simple Storage Service (S3)、Systems Manager、Amazon CloudWatch、Lambda、AWS Identity and Access Management (IAM)、Amazon DynamoDB、Secrets Manager、AWS Certificate Manager 和 Amazon Relational Database Service (RDS))。
- ArcGIS Server 许可。 许可文件必须包括所需的服务器许可角色:ArcGIS GIS Server、ArcGIS Image Server 或 ArcGIS GeoAnalytics Server。
- SSL 证书文件(.pfx 格式)及对应密码。
证书必须来自证书颁发机构。
- Amazon Virtual Private Cloud (VPC) 和子网。
如果要创建独立站点,可以使用以下 CloudFormation 模板之一来创建 VPC:包含两个公共子网的 VPC 或包含两个公共子网和私有子网(含 NAT 网关)的 VPC。
如果您打算将此站点与 ArcGIS Enterprise 门户联合,请确保同一 ArcGIS Enterprise 部署中的所有组件均在同一 VPC 中运行。
- 如果您在 AWS GovCloud 中的 Ubuntu EC2 实例上创建部署,则需要 AMI Id。 如果想要使用基础的标准 Ubuntu AMI,请按照 Esri Amazon Web Services CloudFormation 模板中的说明识别 ID。
- arcgis-server-ha.template.json CloudFormation 模板。
必需任务
运行此模板之前,请完成以下任务:
- 在 AWS 帐户中准备部署的 Amazon Simple Storage Service (S3) 存储段。 启动堆栈时,您将指定模板中的存储段名称。
- 创建存储段或使用现有 S3 存储段。 您必须是存储段的所有者。
- 将 ArcGIS 软件授权文件上传到存储段。
- 将 SSL 证书文件上传到部署存储段。
- 配置域名系统 (DNS)。
您必须具有 ArcGIS Server 站点的完全限定域名。 启动此堆栈之前,域名必须存在且可以解析。 如果不确定如何获得完全限定域名和配置 DNS,请联系 IT 部门。
- 在 AWS Secrets Manager 中配置密码(此为可选项,但建议选择)。
您可以在 AWS Secrets Manager 中配置帐户的密码,例如站点管理员用户名和 Windows arcgis 用户密码。 将为您提供密钥的 Amazon 资源名称 (ARN)。 启动堆栈时,在模板参数中使用 ARN 代替密码。 如果您不使用 AWS Secrets Manager 存储密码,则必须在启动堆栈时在模板参数中键入纯文本密码。
注:
当您在 AWS Secrets Manager 中创建一个密钥 ARN 以用于与 Esri CloudFormation 模板配合使用的密码时,必须使用其他密钥类型作为密钥类型,然后使用纯文本选项。 有关创建用于密码的 Amazon 资源名称的详细信息,请参阅 AWS CloudFormation 和 ArcGIS。
提示:
默认情况下,如果堆栈创建失败,CloudFormation 将删除部分创建的资源。 这十分有用,因为此操作从帐户中移除了无法使用的部署,但是可能使故障排除变得困难。 要在失败状态下保留堆栈,请在启动堆栈之前禁用失败时回滚 CloudFormation 堆栈创建选项。 有关详细信息,请参阅 AWS 帮助中的设置 AWS CloudFormation 选项。
参数
有关此 CloudFormation 模板中所使用参数的描述,请参阅下表。 已按参数类型对表进行分组。
Amazon EC2 Configuration
参数名称 | 是否为必需项? | 参数说明 |
---|---|---|
Platform Type | 必填 | 选择操作系统平台。 支持的类型如下:
对于特定的操作系统版本,请参阅在 AWS 上个将 CloudFormation 用于 ArcGIS 时支持的操作系统。 |
EC2 Instance AMI ID | 可选 | 您可以将此参数值留空。 如果您这样做,CloudFormation 模板将基于您选择的平台类型使用 Microsoft Windows Server 2019 或 Ubuntu Server 20.04 LTS 的最新 Amazon Machine Image (AMI) ID。 注:如果您在 Linux 平台上的 AWS GovCloud 中进行部署,则不可以将此参数留空。 有关从 Canonical 为基础 Ubuntu AMI 查找 ID 的说明,请参阅 Esri Amazon Web Services CloudFormation 模板。 如果您部署在除 Ubuntu 之外的受支持的 Linux 操作系统上,则可以使用 AWS Management Console 查找 AMI ID。 要使用您自己的自定义 AMI,请使用以下方式之一键入 AMI ID:
如使用自定义 AMI,请确保其满足以下要求:
|
EC2 Instance Keypair Name | 必填 | 选择 EC2 密钥对名称以允许远程访问 EC2 实例。 |
Elastic IP Address Allocation ID | 可选 | 采用 eipalloc-XXXXXXXX 格式提供弹性 IP 地址的分配 ID。 如果您想要将站点域名映射到弹性 IP 地址,并通过 AWS 环境外部的 RDP/SSH 访问 EC2 实例,则需要弹性 IP 地址。 如果您不想将弹性 IP 地址分配到 EC2 实例,请将此参数值留空。 |
Amazon VPC Configuration
参数名称 | 是否为必需项? | 参数说明 |
---|---|---|
VPC ID | 必填 | 选择 VPC ID。 注:同一部署中的所有 ArcGIS Enterprise 组件都必须部署在同一 VPC 中。 如果需要创建 VPC,可以使用其中一个 VPC 示例模板:包含公共子网的 VPC 或 包含公共和私有子网及 NAT 网关的 VPC。 |
Subnet ID 1 | 必填 | 选择子网 ID。 您选择的子网 ID 必须在您在上方选择的 VPC 中。 如果您已使用 Esri CloudFormation 模板来创建 VPC,则可以从模板输出参数获取子网 ID。 |
Subnet ID 2 | 必填 | 选择第二个子网 ID。 此 ID 必须是与子网 ID 1 参数不同的子网 ID。 您选择的子网 ID 必须在您为此部署指定的 VPC 中。 如果您已使用 Esri CloudFormation 模板来创建 VPC,则可以从模板输出参数获取子网 ID。 |
Domain Name System (DNS) Configuration
参数名称 | 是否为必需项? | 参数说明 |
---|---|---|
ArcGIS Server Site Domain Name | 必填 | 提供 ArcGIS Server 站点的完全限定域名。 域名必须存在且可以解析。 如果不确定要使用的域名,请联系您的 IT 管理员。 |
Elastic Load Balancer DNS Name | 可选 | 要对部署使用弹性负载均衡器 (ELB),请提供应用程序或经典 ELB DNS 名称的值。 此 ELB 必须已经存在。 如果您不想使用 ELB 或想要稍后自行配置,请将此参数值留空。 您可以通过浏览到 AWS Management Console 中的 Amazon EC2 服务的负载均衡器部分来获取 ELB DNS 名称,或者,如果您已使用 Esri CloudFormation 模板来创建 ELB,则可以从模板的输出参数中获取该名称。 有效的 ELB DNS 名称必须以 .elb.amazonaws.com 结尾。 |
ArcGIS Server Configuration
参数名称 | 是否为必需项? | 参数说明 |
---|---|---|
EC2 Instance Type | 必填 | 指定 EC2 实例类型。 默认值为 m5.2xlarge。 这是要用于 ArcGIS Server 计算机的实例类型。 这些 EC2 实例将部署在自动伸缩组中。 这些计算机将通过访问 ArcGIS Server 配置存储来连接 ArcGIS Server 站点。 |
EC2 Instance Root Drive Disk Space | 必填 | 这是 ArcGIS Server EC2 实例的根驱动器磁盘空间的大小。 提供根驱动器的大小(以 GB 为单位)。 默认值为 100 GB。 最小值为 100 GB。 最大值为 1024 GB。 |
Number of EC2 Instances | 必填 | 提供参与站点的 EC2 实例数。 默认值为 2。 最大值为 10。 最小值为 1。 站点中的 EC2 实例将在自动伸缩组中创建。 这不包括目录文件服务器。 注:ArcGIS GeoAnalytics Server 站点的建议实例数为 1 或 3。 如果您要创建 ArcGIS GeoAnalytics Server 站点,请勿使用默认 EC2 实例数。 |
Deployment Bucket Name | 必填 | 为包含软件许可文件和 SSL 证书的 Amazon S3 存储段提供名称。 此存储段必须已经存在,并且包含您的部署的许可文件和 SSL 证书。 您必须是存储段的所有者,并且该存储段必须位于与部署相同的 AWS 帐户内。 |
Server License File Name | 必填 | 提供 ArcGIS Server 授权文件对象密钥名称。 在启动此堆栈之前,您必须将许可文件(.ecp 或 .prvc 文件)上传到部署存储段。 您可以通过浏览到 Amazon S3 控制台中部署存储段中的文件来获取文件对象密钥名称。 示例包括 server.prvc 或 resources/licenses/server/server.prvc。 您必须使用所创建的 ArcGIS Server 站点类型(GIS Server、ArcGIS GeoAnalytics Server 或 ArcGIS Image Server)适用的许可文件。 许可文件名称区分大小写。 确保正确输入名称。 |
Site Administrator User Name | 必填 | 为 ArcGIS Server 主站点管理员提供用户名。 名称必须包含 6 个或以上的字母数字字符或下划线 (_),并且必须以字母开头。 |
Site Administrator User Password | 必填 | 提供 ArcGIS Server 主站点管理员的密码。 您可以输入纯文本密码或 AWS Secrets Manager 中您的密钥 ID 的 ARN。 有关创建用于密码的 Amazon 资源名称的详细信息,请参阅 AWS CloudFormation 和 ArcGIS。 密码必须为 8 个或以上的字母数字字符,并且可以包含点 (.)。 密码不得包含任何其他特殊字符或空格。 |
Windows arcgis user password | 条件分析 | 提供 arcgis 用户的密码。 arcgis 用户是用于运行 ArcGIS 软件服务的本地 Windows 登录帐户;因此,仅当您在 Windows 上部署时需要此密码。 您可以输入纯文本密码或 AWS Secrets Manager 中您的密钥 ID 的 ARN。 |
Configuration Store Type | 必填 | 选择将保存 ArcGIS Server 配置存储的位置。 默认值为 FileSystem。
注:即使您选择 CloudStore,也会创建单独的文件服务器来托管 ArcGIS Server 共享目录。有关 DynamoDB 容量的详细信息,请参阅此页面的注意事项部分。 |
ArcGIS File Server Instance Type | 必填 | 选择 ArcGIS 文件服务器的 EC2 实例类型。 默认实例类型为 m5.2xlarge。 |
ArcGIS File Server EC2 Instance Root Drive Disk Space | 必填 | ArcGIS 文件服务器 EC2 实例的根驱动器磁盘空间大小。 提供根驱动器的大小(以 GB 为单位)。 默认值为 100 GB。 最小值为 100 GB。 最大值为 1024 GB。 |
Web Adaptor Name | 可选 | 要将 ArcGIS Web Adaptor 与 ArcGIS Server 站点配合使用,请输入 Web Adaptor 的名称。 将通过 https://<fully qualified domain name>/<web adaptor name> 格式的 URL 来访问 ArcGIS Server 站点。 名称必须以字母为开头并且仅包含字母数字字符。 如果您不想使用 ArcGIS Web Adaptor,请将此参数值留空,站点 URL 的格式将为 https://<fully qualified domain name><PortNumber>/arcgis。 |
SSL Certificate File Name | 可选 | 如果您在站点中包含 Web Adaptor,可以提供来自证书颁发机构的 SSL 证书(.pfx 文件)。 如果要提供证书,您必须在启动此堆栈之前将其上传到部署存储段。 您可以通过浏览到 AWS S3 控制台中部署存储段中的文件来获取文件对象密钥名称。 证书名称的示例包括:位于部署存储段根级别的证书文件 domainname.pfx 或存储在部署存储段中的文件夹中的证书文件 resources/sslcerts/domainname.pfx。 如果您使用 Web Adaptor 并将此字段值留空,则将为 Web Adaptor 使用自动生成的自签名证书。 |
SSL Certificate Password | 条件分析 | 提供 SSL 证书的密码。 您可以输入纯文本密码或 AWS Secrets Manager 中您的密钥 ID 的 ARN。 有关创建用于密码的 Amazon 资源名称的信息,请参阅 AWS CloudFormation 和 ArcGIS。 |
输出
当您的堆栈成功创建后,可以在 AWS Management Console 中的 CloudFormation 堆栈的输出选项卡看到以下输出参数。
输出名称 | 输出描述 |
---|---|
DeploymentLogsURL | 这是 Amazon CloudWatch 日志的 URL,其中存储了所有部署日志。 如果部署失败,您可以参考这些日志以进行故障排除。 |
ServerAdminDirURL | ArcGIS Server 管理员目录 URL。 |
ServerManagerDirURL | |
ServerRestDirURL | |
ServerServicesURL | 您可以使用此 URL 作为联合服务器模板中的输入参数。 |
StopStackFunctionName | 这是停止堆栈 Lambda 函数 URL。 您可以使用此 lambda 函数停止堆栈中的所有 EC2 实例。 |
StartStackFunctionName | 这是开始堆栈 Lambda 函数 URL。 您可以使用此 lambda 函数开始堆栈中的所有 EC2 实例。 |
注意事项
创建包含 ArcGIS 部署的 CloudFormation 堆栈后,需要考虑以下几项重要内容:
- 在高可用性 ArcGIS Server 部署中,EC2 实例始终配置在 AWS 自动伸缩组中。 创建 ArcGIS Server 站点后,您可以通过调整自动伸缩组的大小来向 ArcGIS Server 站点添加更多计算机(EC2 实例)。 使用 AWS Management Console 增加自动伸缩组的容量以添加计算机。 要移除计算机,请减少容量。 请参阅关于更改自动伸缩组容量限制的 AWS 说明文档以将计算机添加到 ArcGIS Server 站点或从中移除。
提示:
要查找为 CloudFormation 堆栈创建的 AWS 自动伸缩组,请查看相关 CloudFormation 堆栈的资源选项卡。 资源的逻辑 ID 为 AutoScalingGroup。
虽然在技术上可以将 AWS 自动伸缩组的大小更改为零,但是在自动伸缩组中,至少要使一个实例保持运行,否则,ArcGIS Server 站点可能无法正常运行。
更改组容量后,可能最多需要 1 个小时来添加计算机或最多需要 15 分钟来移除计算机。 应用更改后,使用 ArcGIS Server 管理员 API 以确认 ArcGIS Server 站点中的计算机已相应地增加或减少。
- 使用此模板创建的 ArcGIS Server 站点已禁用 suspendedMachineUnregisterThreshold 属性,这意味着如果该站点中的计算机处于非活动状态,则不会自动取消注册这些计算机。 部署该站点后,可以更改 ArcGIS REST API 中 ArcGIS Server 站点的 suspendedMachineUnregisterThreshold 值,以定义非活动状态的时间段(以分钟为单位),在此时间段之后,将从站点中取消注册计算机。 有关设置此属性的信息,请参阅开发人员帮助中的服务器属性。
- ArcGIS GeoAnalytics Server 站点的建议 EC2 实例数为 1 或 3。 具有更多或更少实例可能导致站点无法正常运行。
- 如果您为配置存储类型参数选择了 CloudStore,则 Amazon DynamoDB 的配置容量单位设置如下:
- 读取容量单位:250 个表
- 写入容量单位:25 个表
这些设置的估计成本约为每月 36 美元。 Esri 测试表明这些设置对于发布约 500 个服务而言效果很好。 您可以在 AWS Management Console 中编辑此设置以减少单位进而降低成本,或者增加单位以容纳更多服务。 请记住,如果您没有足够的容量,一些功能(例如,发布)将会失败。
- 请勿删除此 CloudFormation 模板创建的任何 AWS 资源。 如果您想要了解此模板创建了哪些 AWS 资源,请在 AWS Management Console 中查看此堆栈的资源选项卡。 Esri CloudFormation 模板创建的每个资源还具有元数据标签。 但是,一些资源不会在 AWS Management Console 中显示标签。
- 如果您对密码(例如站点管理员用户密码或 Windows arcgis 用户密码)使用 AWS Secrets Manager ,则可以稍后(创建部署后)更改这些密码,并确保使用更新的密码更新相应的 AWS Secrets Manager ARN。
- 如果您在部署中使用应用程序负载均衡器,则可以在创建部署后调整应用程序负载均衡器空闲超时。 例如,您可能需要增加空闲超时以确保需要很长时间才能在部署中的任意计算机上完成的操作。 在 AWS Management Console 中调整应用程序负载均衡器空闲超时值。
- 您可以使用堆栈输出中显示的 AWS Lambda 函数(在此页面的“输出”部分中列出)在不使用时停止此堆栈中的 EC2 实例,并在需要时重新启动。 此函数对于帮助您管理成本十分有用。
当您运行 Lambda 函数以停止部署中 EC2 实例时,函数将返回消息提示实例已停止。 但是如果实例已加入自动伸缩组,函数还必须将实例从组中分离。 此过程可能需要花费 10 分钟才能完成。 因此,在您运行 Lambda 启动函数以重新启动部署之前,请至少等待 10 分钟。
注:
您必须使用 Lambda 函数来停止或启动自动伸缩组中的 EC2 实例。 自动伸缩组将基于为其设置的容量添加计算机;如果您使用 AWS Management Console 关闭自动伸缩组中的 EC2 实例,则会添加新的实例。
疑难解答
如果您在创建此 CloudFormation 堆栈时发现任何故障,请参阅 AWS 上的 ArcGIS 部署疑难解答。