使用 CloudFormation 在 AWS 上部署 Neo4j
本页面介绍如何使用 CloudFormation 在 AWS 上部署使用虚拟机的 Neo4j 集群。
基础
Neo4j CloudFormation 模板允许您在 AWS 上使用虚拟机部署任意大小的因果集群,并使用几乎任何类型的机器。这些模板基于 Neo4j 云虚拟机,这些虚拟机已针对 Amazon (AMI) 提供。
AWS 市场
Neo4j Enterprise Causal Cluster 现已在 AWS 市场中提供,您可以在 此链接 中找到。
本文中讨论的 CloudFormation 模板与驱动此市场清单的模板相同。因此,如果您不需要对 CloudFormation 模板进行任何修改,则使用市场选项可能更简单,该选项是 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 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 存储。
有关可用的其他参数,请参阅模板顶部的参数。其他选项包括创建多个只读副本的功能。
支持代码
将任何版本的 Neo4j 构建为 AMI 或 CloudFormation 模板的代码位于 私有 GitHub 存储库 中。可以根据要求向客户授予访问权限,但存储库不会公开。
由于 CloudFormation 的工作方式,最终的 CloudFormation 模板本身可能难以使用。例如,CloudFormation 本身不支持创建可变数量的资源(例如用户输入的集群中核心节点的数量),因此最终的模板包含代码以创建多达 9 个核心节点,并根据用户选择进行条件判断。在 GitHub 存储库中,我们使用名为 jinja 的模板语言生成 CloudFormation 模板,使它们更易于阅读和以模块化方式进行管理。如果需要进行大量修改,您可能希望考虑使用这些 Jinja 模板而不是原始 CloudFormation 模板。
此页面是否有帮助?