NAT实例维护

时间:2019-03-19 20:54:26

标签: aws-lambda aws-vpc

我有一个通过Zappa部署在AWS Lambda上的Django应用,我的应用需要与公共互联网通信,因此我需要使用NAT实例。我使用的是NAT实例,因为它比使用免费套餐的NAT网关便宜约10倍。缺点是,与NAT网关不同,NAT实例需要实际维护,我不确定它需要哪种维护。我想了解保持服务器正常运行所需要做的事情。

我可以做些什么来确保这一点?

这是我的AWS架构:

以下所有内容都在我的VPC中。我在ca-central-1a中有1个子网,在ca-central-1b中有1个子网。在路由表中,两个子网都指向我的NAT实例。我在ca-central-1b中有第三个子网,并且在路由表中它指向Internet网关。我的NAT实例位于ca-central-1b中。

我的NAT实例安全组NATSG在ca-central-1a和ca-central-1b中都有来自我两个子网的HTTP和HTTPS入站,出站到0.0.0.0/0。 我是否应该在ca-central-1a中创建另一个NAT实例,并使其仅从ca-central-1a中的子网入站,即每个子网1个NAT实例?会更健康/更安全吗?

其他信息:

我禁用了源/目标检查。这是个好主意吗?

对于我的AMI,我选择了最近的社区AMI amzn-ami-vpc-nat,并创建了一个具有我的NAT实例的自动缩放组。它只有1个实例,如果其中只有1个实例,?我不确定我是否正确使用了Auto Scale Group,我只是创建了它,但是没有没有配置任何东西。

2 个答案:

答案 0 :(得分:1)

  • 维护NAT实例对于安全更新,安全组和实例故障是必需的。

  • 不必在每个子网中都放置NAT实例。您可以通过单个NAT实例连接多个实例。另外,建议将NAT实例放置在公共子网中。

  • 默认情况下,每个EC2实例均启用
  • 源/目的地检查,这表明该实例必须是其发送或接收的流量的源或目的地。因此,必须禁用NAT实例的源/目的地检查,因为NAT实例不是发送或接收流量的源或目的地。它 只是充当将流量发送到私有实例的中介。
    下面的链接详细介绍了禁用源/目标检查

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck

  • 将所需容量设置为1将始终保留1个NAT实例 起来但是值得关注的是,当NAT实例终止时,会自动扩展 组将启动各自的NAT实例, 默认情况下,源/目标“启用”。我们必须禁用它 手动,以及在路由表中通过 选择目标作为nat-i​​nstance-id不会得到更改,并且Route 表将指向已终止的实例。要得到 对于新启动的NAT实例,已禁用SourceDestCheck属性 可以从实例的用户数据启动它。
    这是一个示例Shell脚本。
EC2_INSTANCE_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
EC2_AVAIL_ZONE=`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone`
EC2_REGION=`echo \$EC2_AVAIL_ZONE\ | sed -r 's/.{2}$//'`
echo "Region:" $EC2_REGION

aws ec2 modify-instance-attribute --instance-id $EC2_INSTANCE_ID --source-dest-check "{\"Value\": false}" --region $EC2_REGION

rc=$?; if [[ $rc != 0 ]]; then echo "Failure:" $rc; exit $rc; fi

echo "Success"

答案 1 :(得分:1)

抱歉,@ Rony Azrak的回复延迟。由于您的关注点是在启动后配置实例详细信息,因此我们假设您正在考虑更新用户数据脚本,这样做的可能方法是通过外壳运行脚本。
只需将给定脚本保存在.sh文件中,例如a.sh,然后通过命令执行即可,即为
#sh a.sh
但是此更改仅特定于实例,不会反映到下一个即将到来的实例(如果您正在使用它,则可能会通过自动缩放启动)。
为此,由于无法编辑现有的启动配置,因此需要通过在“高级详细信息”部分添加脚本来创建具有所需修改的新启动配置。最终导致启动新实例。
关于自动缩放,我们建议您使用自动缩放,它将自动执行启动实例的任务。您只需为使用的资源付费就不会产生任何额外费用。