前言

关于使用 CloudFormation 构建 Neo4j 集群相关文档,我已写过两篇,感兴趣的朋友请移步:

定制模板

在设计我们的模板前,我们先理清需求,根据具体业务需求,添加或更改默认模板中相关模块。需求如下:

  • (1)使用已手动创建好的vpc网段;
  • (2)使用该vpc网段下手动创建好的子网subnet;
  • (3)neo4j集群各节点分布在同一可用区下,如"ap-southeast-1a";
  • (4)创建neo4j集群的安全组;

上面的需求点我们已经了解,下面我们来定制开发我们的模板吧。

具体实施流程

由于 template 文件涉及的配置较多,我这里挑重点部分说明下,文章后面我会共享一份我已修改的temptele,方便大家理解和参考。

指定可用区

在模板中Parameters下添加如下:

## 增加如下内容
"AvailabilityQu": {
            "Type": "String",
            "Description": "Availability Zone into which instance will launch",
            "Default": "ap-southeast-1a"
        },

上面我们定义了一个"可用区"的参数,类型是字符串,默认值是"ap-southeast-1a"。下面我们在模板中引用该参数。

指定VPC网段和子网

在模板中Parameters下添加如下:

## 增加如下内容
## VPC
....
  "VpcId" : {
  "Type" :"AWS::EC2::VPC::Id",
  "Description" :"VPCId of Virtual Private Cloud (VPC).",
  "Default" :""
  },
## Subnet
  "VpcSubnet": {
  "Description" :"SubnetId in VPC",
  "Type" :"AWS::EC2::Subnet::Id",
  "Default" :""
  }
},

关联子网

在模板Resources下更新如下内容:

...
    "SubnetRouteTableAssociation0": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "SubnetId": "subnet-01234563f26",
        "RouteTableId": {
          "Ref": "RouteTable"
        }
      }
    },
    "SubnetNetworkAclAssociation0": {
      "Type": "AWS::EC2::SubnetNetworkAclAssociation",
      "Properties": {
        "SubnetId": "subnet-01234563f26",
        "NetworkAclId": {
          "Ref": "NetworkAcl"
        }
      }
    },

关联网关

在模板Resources下更新如下内容:

"AttachGateway": {
      "Type": "AWS::EC2::VPCGatewayAttachment",
      "Properties": {
        "VpcId": "vpc-0c5123456c31898",
        "InternetGatewayId": "igw-03123456f66727"
      }
    },

这里涉及到的修改内容较多,详见文章后我已修改的temptele。

安全组

    "sgNeo4jEnterprise": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "VpcId": "vpc-0c5123456c31898",
        "GroupDescription": "Neo4j Ports",
        "SecurityGroupIngress": [
          {
            "IpProtocol": "tcp",
            "FromPort": "5000",
            "ToPort": "5000",
            "CidrIp": "10.x.0.0/16"
          },

这里涉及到的修改内容较多,详见文章后我已修改的temptele。
注意⚠️:这种方式部署会覆盖模板中使用的子网关联 网络 ACL 入站规则,所以实施前一定要对之前网络 ACL留个记录,如下:

构建Neo4j使用已存在的VPC和子网

分享Temptele