NebulaGraph on AWS,BastionAutoScalingGroup创建失败

  • nebula 版本:Nebula Graph on AWS, 3.1.2
  • 部署方式:分布式
  • 安装方式:AWS QuickStart, "Deploy NebulaGraph into an existing VPC"模板
  • 是否为线上版本:N
  • 模板参数


  • 问题的具体描述
    创建BastionStack的嵌套模板(https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}submodules/quickstart-linux-bastion/templates/linux-bastion.template)运行失败,失败步骤为创建BastionAutoScalingGroup,无更具体的报错信息:

    但此时AutoScalingGroup实际上似乎已经创建完成:


    重新运行无法解决此问题。
    (另外,如果使用“Deploy NebulaGraph into a new VPC”模板则可以正常部署,但该模板不适用于我们的场景)

我注意到“Deploy NebulaGraph into an existing VPC”模板中PublicSubnet1ID和PublicSubnet2ID引用了同一个参数,但在“Deploy NebulaGraph into a new VPC”模板中它们则是两个不同的参数,会与此有关吗?

@buxcon 我复现一遍看下

我试着手动模拟linux-bastion.template中的cfn_success方法,会报ConnectionError,不知道我模拟的姿势对不对。。

这是我的测试参数

AccessCIDR	0.0.0.0/0	
BastionAMIOS	Amazon-Linux2-HVM	
BastionInstanceType	t2.micro	
DashboardInstanceType	t3.medium	
EnableDashboard	true	
EnableExplorer	true	
ExplorerInstanceType	t3.medium	
GraphInstanceType	t3.large	
GraphNodeCount	1	
GraphVolumeSize	10	
GraphVolumeType	gp2	
KeyPairName	kevin-test	
MetaInstanceType	c5.large	
MetaNodeCount	1	
MetaVolumeSize	20	
MetaVolumeType	gp2	
NebulaGraphVersion	3.1.2	
PrivateSubnet1AID	subnet-08c94753482a2a80e	
PrivateSubnet2AID		
PrivateSubnet3AID		
PublicSubnet1ID	subnet-089cca2923121a1d3	
QSS3BucketName	aws-quickstart	
QSS3BucketRegion	us-east-1	
QSS3KeyPrefix	quickstart-vesoft-nebula-graph-cloud/	
RemoteAccessCIDR	0.0.0.0/0	
StorageInstanceType	c5.large	
StorageNodeCount	1	
StorageVolumeSize	32	
StorageVolumeType	gp2	
VPCCIDR	10.0.0.0/16	
VPCID	vpc-0f2621f13a2db6ee7	

流程跑完是成功的

我参考重建一下看看

使用了可以说和你相同的配置,但还是报同样的错

AccessCIDR	0.0.0.0/0
BastionAMIOS	Amazon-Linux2-HVM
BastionInstanceType	t2.micro
DashboardInstanceType	t3.medium
EnableDashboard	true
EnableExplorer	true
ExplorerInstanceType	t3.medium
GraphInstanceType	t3.large
GraphNodeCount	1
GraphVolumeSize	10
GraphVolumeType	gp2
KeyPairName	key-pair-zhangweiran01-sh-office-pc
MetaInstanceType	c5.large
MetaNodeCount	1
MetaVolumeSize	20
MetaVolumeType	gp2
NebulaGraphVersion	3.1.2
PrivateSubnet1AID	subnet-0e09c80c4c22c0fab
PrivateSubnet2AID
PrivateSubnet3AID
PublicSubnet1ID	subnet-0a7c61a660234a7a9
QSS3BucketName	aws-quickstart
QSS3BucketRegion	us-east-1
QSS3KeyPrefix	quickstart-vesoft-nebula-graph-cloud/
RemoteAccessCIDR	0.0.0.0/0
StorageInstanceType	c5.large
StorageNodeCount	1
StorageVolumeSize	32
StorageVolumeType	gp2
VPCCIDR	10.0.0.0/16
VPCID	vpc-0b6a29b01f4175c28


从时间上看,每次失败都是超过了CreationPolicy的超时时间
image

这是创建出的AutoScaling组Bastion实例的cloud-init相关log:
cloud-init日志.zip (212.5 KB)

但我没找到cfn-signal相关log

我的推测是stack没有收到ec2实例发送的cfn-signal消息,进而未能满足模板中AutoScalingCreationPolicy.MinSuccessfulInstancesPercent=100的要求,进而失败。

于是我在ec2上手动模拟cfn消息的发送:

/opt/aws/bin/cfn-signal -e 0 --stack vesoft-nebula-graph-cloud-BastionStack-CB5W8KSFDJZ4 --region ap-northeast-1 --resource BastionAutoScalingGroup

回报连接错误:

所以在我们自有的VPC中部署,网络相关的配置有什么特别需要注意的吗?

@buxcon GitHub - aws-quickstart/quickstart-aws-vpc at 0e6fe38a2a711c034006e15e47b6a79124904501 我们是按照aws官方的做法引用vpc库,这里包含了架构图,你可以跟现有的vpc比对下

经过一些摸索解决了问题,分享一下我的主要操作:

1、当BastionAutoScalingGroup的机器创建出时,立刻到机器上做两件操作:

sudo yum install git
sudo echo "nameserver 某个DNS" >> /etc/resolv.conf

然后等待BastionAutoScalingGroup的自动重试,自动重试后该步骤便会成功。
2、调整配置中的 Network configuration - Permitted IP range 字段,将掩码放开到8。

经过这两个步骤,整个部署流程就会成功。
解释一下这些操作的原因:

  1. 你们的linux-bastion.template模板中,681行的命令会运行失败,导致创建出的Bastion缺少git,进而导致cloud-init中git clone相关命令无法执行成功
  2. 模板创建出的Bastion机器,/etc/resolv.conf文件是空的,导致它无法联网,进而无法向CloudFormation发送cfn-signal消息
  3. 默认的Permitted IP range放开的范围太小,Storage、Meta等机器的Private IP常常是10.a.b.c(a!=0),所以当掩码是16时,创建出的安全组会拦住Storage和Meta间的流量

部署模板大概还可以优化一下,感谢 :wink:

1 个赞

对了顺便问一下,我通过CloudFormation方式部署完3.1.2,假如后续出了3.2.0之类的新版本,有什么便捷升级方式吗?

另外这样部署的版本是企业版?会自动通过AWS收费还是需要单独申请License?

企业版,当前需要单独申请license,未来会推出线上激活功能

可以直接升级 Upgrade NebulaGraph from v3.x to the current version - NebulaGraph Database Manual

bastion是我们引用的aws库,这部分我们可以再优化下做成可配置,防止意外阻碍整体流程

1 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。