AWS CloudFormation 和 ArcGIS Server 的高可用性

使用 ArcGIS Server on AWS 时,可以利用 Amazon Web Services (AWS) CloudFormation 的一些功能来获得某些高可用性优势。

需要一些背景知识才能了解此方法的必要性。通常,人们是从使用 ArcGIS Server Cloud Builder 来开始使用 ArcGIS Server on AWS。以下是一个简单的向导,可帮助您在 Amazon 弹性计算云 (EC2) 中建立 ArcGIS Server 站点。向导的输出是一个可能具有许多计算机的站点,这些计算机可以在自身之间分配作业,并能充分利用 ArcGIS Server 10.1 和 10.2 中的对等架构。除了可用于在模式相同后启动附加站点的模板外,云构建器还提供了用于进行站点备份的框架。

下图显示了云构建器创建的架构。

云构建器启动的 ArcGIS Server 架构

就高可用性而言,云构建器创建的站点存在一些缺点。如果运行配置存储的 GIS 服务器实例丢失,站点将不可用。此外,站点恢复备份需要 30 分钟或更长时间,有些组织可能无法接受这样长的停机时间。

另一种可避免这些问题的方法是采用筒仓架构,如下所示,其中,弹性负载均衡器 (ELB) 下连接有很多相同却独立的 ArcGIS Server 站点。此架构仅在 10.1 之前的版本中与 ArcGIS Server on AWS 配合使用,如果您愿意舍弃管理的方便性以及在服务器间分配大型作业(例如,构建缓存切片)的功能,也可以在 10.1 和 10.2 中使用此架构。

筒仓架构的一个主要优势是,即使 GIS 服务器实例丢失,您仍可继续运行 ArcGIS Server。

可通过 CloudFormation 启动的 ArcGIS Server 筒仓架构类型

筒仓架构无法通过云构建器构建:必须使用 AWS 管理控制台或 API 手动创建。但是,借助 Amazon CloudFormation 的一些功能,筒仓架构的启动和维护可以比以往轻松得多。CloudFormation 可确保您始终只需维护站点中最少量的计算机,因而,可在其中一台计算机不可用时实现无缝恢复。

该主题的其余部分介绍如何使用 CloudFormation 建立筒仓架构。

使用 CloudFormation 构建筒仓架构

Amazon CloudFormation 服务可帮助您为所使用的 Amazon Web Services 定义架构。它是一种代码形式的基础架构示例,这表示您编写可以在云环境中部署特定硬件基础架构的代码。对于 CloudFormation,可以使用 JavaScript 对象表示法 (JSON) 模板来定义以预先确定的方式结合使用的资源堆栈。这种情况下,模板定义 ArcGIS Server 筒仓站点以及将其保存在一起的弹性负载均衡器。

复制并检查模板

步骤:
  1. 要开始此过程,请检查以下示例模板之一:
  2. 将模板代码复制到文本文件并保存。
  3. 检查设置的 JSON 属性,如有需要可进行修改。

    参数对象中有很多属性可在启动堆栈时进行设置,例如,参与站点的实例数量和类型以及所使用的 Amazon 机器映像 (AMI)。其他资源(例如,弹性负载均衡器 (ELB) 设置)将刻录到模板中,并且只能由模板作者进行更改。

    请注意自动伸缩功能和云监控警报设置,它们定义根据 CPU 使用率等因素而触发在站点中添加和移除计算机的触发器。您还可以定义只要对 AMI 进行更改便会立即更新的计算机数量,这样便可始终保留一个可用的实例。

  4. 除此模板中的项目外,您还可以在 ELB 中引进一个 LBCookieStickinessPolicy,用于确定是否启用粘滞会话。这些可确保在用户会话期间,用户请求指向同一 GIS 服务器计算机。这对于处理长时间运行的功能(例如,异步地理处理作业)十分有用。
  5. 您还可以定义在堆栈上应用的 SSL 证书。要进行此操作,请将证书上载到 AWS 身份和访问管理 (IAM) 并在模板中插入代码以指定 ELB 中的 SSLCertificateId 设置。

创建堆栈

选择模板后,按照下列步骤使用筒仓架构启动多机 ArcGIS Server 站点。

步骤:
  1. 使用 AWS 管理控制台通过 Esri 提供的任一 ArcGIS Server AMI 启动实例
  2. 授权 ArcGIS Server 并在实例上创建站点。
  3. 使用服务、数据和任何想要安装的第三方应用程序配置实例。
    警告警告:

    如果存在任何不使用缓存的地图服务,请将地图服务的 supportedImageReturnType 属性设置为 MIME,而不是 URL(这样,用户在尝试检索地图图像时便不会重新回到堆栈以及可能错误的实例)。要调整此设置,需要编辑 ArcGIS Server 管理员目录中的服务属性;此设置在管理器中不可用。

  4. 通过实例保存 AMI。基于此 AMI 创建的所有实例都相同。每个实例都是自己的 ArcGIS Server 站点,具有自己的配置存储、服务器目录和数据。
  5. 创建 AMI 后,记录 AMI ID,以用于创建堆栈。
  6. 在 AWS 管理控制台中,单击服务 > CloudFormation打开 CloudFormation 堆栈 页面。
  7. 单击创建堆栈
  8. 提供堆栈名称
  9. 选择上载模板文件,浏览到之前保存和修改的一个模板文件,然后单击继续
  10. 为您的堆栈设置下列属性:
    1. AMI 属性更改为步骤 3 中创建的 AMI 的 ID。
    2. MaxSize 更改为希望一次参与堆栈的最大实例数。
    3. 如果正在使用 VPC 模板,请将 VPCId子网AZ(可用区)的选项设置为与所需 VPC 环境设置相对应。
    4. 调整 InstanceType 以反映所需实例的大小。
    5. KeyName 修改为您的 Amazon 密钥对名称。不要包含 .pem 扩展名。
    6. MinSize 更改为希望一次参与堆栈的最小实例数。如果将此值设置为 2 或更大值,则在计算机不可用时,可避免站点丢失。如果仅找到一个实例,CloudFormation 将立即创建第二个实例。
  11. 单击继续
  12. 添加用于轻松标识实例的标签,例如,Key = NameValue = MyCloudFormation,然后单击继续
  13. 检查所有参数,准备好创建堆栈后,单击继续

将启动您的堆栈。一小段时间后,可通过下列 URL 格式访问 ArcGIS Server。http://<弹性负载均衡器地址>/arcgis/rest

5/15/2014