已知数量的自动缩放 EC2 实例上的静态私有 IP

Static private IPs on known numbers of Autoscaling EC2 instances

我正在构建一个从 AWS MediaLive 到位于 2 个不同可用性区域的一组 2x EC2 实例的工作流。 EC2 实例来自自动缩放组,该组设置为始终保留 2 个实例 运行(每个可用区 1 个)。

据我所知,这不是问题,除非我需要两个 MediaLive 管道始终指向一个特定实例而不是另一个。正如您可能知道的那样,每次生成实例时私有 IP 都会更改,因此我很难以不需要每次实例更改时都重新启动流的方式指向 MediaLive。

所以问题是:如何重用相同的私有 IP 并将其分配给在相同可用区中生成的新实例?

考虑到到目前为止我一直在尝试启动模板的几种组合(总是无法启动)并尝试为每个 AZ 创建(并分配)一个 /31 子网只是为了找出最多 /28 可以被创建。

非常感谢, 费德里科

启动新实例时,它可以运行一个用户数据脚本检查它在哪里(哪个AZ),然后分配一个弹性IP地址给本身。

我会推荐:

  • 为标识特定 AZ 的两个弹性 IP 地址中的每一个添加标签
  • 在User Data脚本中,使用EC2元数据服务发现实例的AZ
  • 然后,关联具有匹配标签的弹性IP地址

这是一个具有类似概念的博客 post,它使用用户数据脚本更新 Route 53 域名:Amazon Route 53: How to automatically update IP addresses without using Elastic IPs - DEV Community

好的,在从 AWS 控制台多次尝试失败后,我决定尝试一些不同的东西,并使用用户数据脚本按照我的方式工作。

  • 我首先创建了 2 个 ENI(每个 AZ 我需要一个)并手动分配了静态私有 IP。
  • 然后我使用用户数据脚本调用一些 AWS CLI 命令来查找实例 ID 及其可用区。
  • 根据手头的这些信息,我只需将 bash 当前 AZ 与正确的 ENI 相匹配,并使用正确的 AWS CLI 命令将新的网络接口附加到 EC2 实例。

由于预先知道 EC2 实例的最大数量,因此创建足够的网络接口然后手动附加它们直到分配完所有实例是微不足道的。