知识库

使用 CloudFormation 在 AWS 上部署 Neo4j

本页面介绍如何使用 CloudFormation 在 AWS 上,通过虚拟机部署 Neo4j 集群。

基础

Neo4j CloudFormation 模板允许在 AWS 上以虚拟机形式部署任意大小、几乎任意机器类型的因果集群。这些模板基于已可用于 Amazon(AMI)的 Neo4j 云虚拟机

AWS Marketplace

Neo4j 企业版因果集群已在 AWS Marketplace 中提供,可通过此链接找到。

本文讨论的 CloudFormation 模板与驱动此 Marketplace 列表的模板相同。因此,如果您不需要对 CloudFormation 模板进行任何修改,那么直接使用 Marketplace 选项可能会更容易,该选项是 BYOL(自带许可证)模式,这意味着它每小时不收取任何额外费用。

本文适用于需要自定义默认部署选项的客户。

可用性

JSON 格式的模板已在名为 s3://neo4j-cloudformation 的公共 S3 存储桶中提供。有两种类型的模板可用;一种用于独立单实例 Neo4j 安装,另一种用于因果集群设置。本文的其余部分将讨论因果集群设置。独立实例遵循相同的通用规则和架构,唯一的区别在于它创建单个虚拟机而不是可配置数量的虚拟机。

模板适用于 Neo4j 的许多(但并非所有)版本。例如,3.5.12 版本的 CloudFormation 模板的完整公共 URL 是 https://s3.amazonaws.com/neo4j-cloudformation/neo4j-enterprise-stack-3.5.12.json

模板结构的基础从一个版本到另一个版本是相同的,主要区别在于所使用的 AMI 的 Neo4j 版本。

架构

CloudFormation 模板遵循的部署架构可在此处查看

aws ec2 diagram

通常,会创建一个新的 AWS VPC,其中核心节点和读副本在三个子网中轮流分布,每个子网都位于 AWS 的同一区域内不同的可用区。CloudFormation 模板的一个限制是,它只能在具有 >= 3 个可用区的区域中使用,以允许这种分布;在发生可用区中断时,数据库将保持可用。

客户 VPC

您可能需要根据自身需求修改模板的最常见原因是将 Neo4j 集群部署到现有的 VPC 中。

CloudFormation 模板目前(默认情况下)不允许将新集群放置到现有 VPC 中,因为有太多因素需要考虑以使其成为可靠的操作,包括子网中空闲 IP 地址的数量、现有路由规则以及其他因素。这绝对是可行的,但它需要您组织进行自定义以确保这些因素已得到考虑。

以下是模板中需要检查的简短事项清单

  • 虚拟机与子网的关联

  • 可能不需要创建互联网网关

用法

要从 JSON 文件创建 CloudFormation 堆栈,请自定义此命令,并根据需要替换参数

$ aws cloudformation create-stack \
   --stack-name StackyMcGrapherston \
   --template-body file://neo4j-enterprise-stack.json \
   --parameters ParameterKey=ClusterNodes,ParameterValue=3 \
                ParameterKey=InstanceType,ParameterValue=m3.medium \
                ParameterKey=NetworkWhitelist,ParameterValue=0.0.0.0/0 \
                ParameterKey=Password,ParameterValue=s00pers3cret \
                ParameterKey=SSHKeyName,ParameterValue=my-ssh-key-name \
                ParameterKey=VolumeSizeGB,ParameterValue=37 \
                ParameterKey=VolumeType,ParameterValue=gp2 \
  --capabilities CAPABILITY_NAMED_IAM

此命令将创建一个运行在 m3.medium 机器上的 3 节点因果集群,对整个互联网开放(因为我们允许网络白名单为 0.0.0.0/0)。它将使用给定的 neo4j 用户密码初始化数据库,并允许使用指定的 SSH 密钥进行直接 SSH 访问。每个节点将分配 37GB 的 GP2 存储。

有关更多可用参数,请查阅模板顶部的参数。其他选项包括创建多个读副本的能力。

持续管理

CloudFormation 不会自动管理集群本身的操作,也不提供太多自动伸缩功能。因此,一旦基础设施部署完成,管理和自定义配置就留给具有 SSH 访问权限的操作员。

支持代码

用于将任何版本的 Neo4j 构建为 AMI 或 CloudFormation 模板的代码位于私有 GitHub 存储库中。客户可根据请求获得访问权限,但该存储库不会公开。

已完成的 CloudFormation 模板本身可能难以使用,因为 CloudFormation 的运作方式。例如,CloudFormation 不原生支持创建可变数量的资源(例如用户输入的集群中核心节点的数量),因此已完成的模板包含创建最多 9 个核心节点的代码,并根据用户选择的内容设置条件。在 GitHub 存储库中,我们使用名为 Jinja 的模板语言生成 CloudFormation 模板,使其更易于以模块化方式读取和管理。如果需要进行大量修改,您可能希望考虑基于这些 Jinja 模板而不是原始 CloudFormation 模板进行操作。

© . All rights reserved.