使用Auto Scaling组启动EC2时分配预定义的专用IP

时间:2019-06-29 14:05:33

标签: amazon-web-services amazon-ec2 aws-lambda aws-sdk

我有一个MEAN应用程序,正在使用专用IP在服务器或应用程序之间提供连接。我正在应用程序内部为此使用ec2实例专用IP。

现在,我想在生产环境中使用Auto Scaling。但是使用Auto Scaling组启动ec2实例时,我无法分配预定义的私有IP。

Is there a better way to do this? Perhaps through Launch Configurations?  

什么是允许为Auto Scaling组启动的ec2实例分配私有IP的最佳方法?

2 个答案:

答案 0 :(得分:0)

Amazon EC2 Auto Scaling通过以下方式调整容量:

  • 启动新实例
  • 终止现有实例

启动新实例后,它将收到关联子网的CIDR范围内的私有IP地址。虽然在Amazon EC2中通常可以请求特定的IP地址(通过DHCP保留来完成),但是使用Auto Scaling不可能。而是,每个实例将从子网的CIDR范围接收一个随机地址。

如果您的应用程序确实确实需要一定范围的预定义IP地址,则可以使用弹性IP地址池,并让每个新实例“抢”这些地址之一。但是,引用公共IP地址(而弹性IP地址是公共IP地址)的VPC内的流量收取1c / GB的费用,因为它先流出然后又回到VPC。我不推荐这种方法。

鉴于在任何时候都可以运行数量可变的实例,因此,假设您的应用程序可以处理以下事实:它可能已注册了IP地址但未使用,您可以在其中分配每个IP地址CIDR范围。您甚至可以创建一个较小的子网,因此范围不是很大。

答案 1 :(得分:0)

ec2 实例的启动配置中,无法为自动伸缩组保留特定的专用IP。

但是这里有三种可能的解决方法。

  1. 请按照私有IP 创建小子网,并在创建 Auto Scaling组时选择它。

  2. 创建 ENI(网络接口),并将其分配给您选择的私有IP 地址,在 Auto Scaling启动配置中写入用户数据脚本,该脚本使用 AWS cli工具来发现预先创建的 ENI 并将其附加到 ec2实例

  3. 您还可以尝试使用用户数据向实例主界面添加次要私有IP 地址。