【问题标题】:Allocate Predefined Private IPs when launching EC2 using Auto Scaling Group使用 Auto Scaling 组启动 EC2 时分配预定义的私有 IP
【发布时间】:2019-06-30 14:12:07
【问题描述】:

我有一个 MEAN 应用程序,我在其中使用私有 IP 来提供服务器或应用程序之间的连接。我在我的应用程序中为此使用了 ec2 实例私有 IP。

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

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

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

【问题讨论】:

  • 您能否提供更多关于您如何在应用程序中使用 IP 的信息?您应该使用 AWS 安全组成员身份来打开端口,而不是指定私有 IP 地址,但我需要更多关于您的应用程序正在做什么的信息,以提供使用特定 IP 的完整替代方法。
  • 你把 IP 地址放在哪里——在一个主服务器中,然后与从机通信?当 Auto Scaling 终止其中一个实例时会发生什么 - 系统对丢失实例有何反应?请编辑您的问题以提供有关其工作原理的更多信息。

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


【解决方案1】:

无法在 ec2 实例的启动配置中为 Auto Scaling 组保留特定的私有 IP。

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

  1. 根据私有IP,请创建小子网并在创建Auto Scaling Group时选择它。

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

    李>
  3. 您也可以尝试使用用户数据将辅助私有 IP 地址添加到实例主接口。

【讨论】:

    【解决方案2】:

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

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

    启动新实例时,它会收到关联子网 CIDR 范围内的私有 IP 地址。虽然通常可以在 Amazon EC2 中请求特定 IP 地址(通过 DHCP 预留完成),但 Auto Scaling 无法做到这一点。相反,每个实例都会收到来自子网 CIDR 范围的随机地址。

    如果您的应用程序确实需要一系列预定义的 IP 地址,您可以使用弹性 IP 地址池,并让每个新实例“获取”其中一个地址。但是,VPC 中引用公共 IP 地址(而弹性 IP 地址是公共 IP 地址)的流量会产生 1c/GB 的费用,因为它会流出然后返回 VPC。我不会推荐这种方法。

    鉴于随时可能有可变数量的实例在运行,因此假设您的应用程序可以处理它可能已注册但未使用的 IP 地址这一事实,您可以只为它提供每个 IP 地址CIDR 范围。您甚至可以创建一个较小的子网,这样范围就不会很大。

    【讨论】:

    • 关于制作更小的子网的一个说明:截至今天(2021 年 7 月),允许的最小子网为 /28,因此如果有人尝试创建 /31 或 /32,它将失败。跨度>
    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 2016-04-16
    • 2018-11-01
    • 2018-07-13
    • 2018-02-05
    • 2018-09-30
    • 2020-03-16
    • 2013-10-13
    相关资源
    最近更新 更多