具有弹性 IP 的 Amazon EC2 自动扩展实例
Posted
技术标签:
【中文标题】具有弹性 IP 的 Amazon EC2 自动扩展实例【英文标题】:Amazon EC2 autoscaling instances with elastic IPs 【发布时间】:2012-06-16 22:05:09 【问题描述】:有没有办法让添加到自动缩放组的新实例与弹性 IP 关联?我有一个用例,我的自动缩放组中的实例需要在远程服务器上列入白名单,因此它们需要具有可预测的 IP。
我意识到有一些方法可以使用 API 以编程方式执行此操作,但我想知道是否还有其他方法。 CloudFormation 似乎可以做到这一点。
【问题讨论】:
【参考方案1】:您可以像处理任何其他实例一样使用手动或脚本 API 调用将弹性 IP 与 ASG 实例相关联——但是,没有自动的方法来执行此操作。 ASG 实例被设计为临时/一次性的,而 Elastic IP 关联违背了这一理念。
要解决您的问题:白名单,您有几个选择:
-
如果需要可预测源 IP 的系统位于 EC2 上并由您控制,您可以禁用 IP 限制并改用 EC2 安全组来保护流量
如果系统不在您的控制之下,您可以使用弹性 IP 设置代理服务器,并让您的 ASG 实例使用代理处理出站流量
您可以使用 http://aws.amazon.com/vpc/ 来完全控制实例寻址,包括网络出口 IP,尽管这可能很耗时
【讨论】:
【参考方案2】:我可以找到 3 种方法来执行此操作。 Cloud Formation 只会使其自动化,但您需要先了解发生了什么。
1.-正如@gabrtv 提到的使用 VPC,这有两种选择。 1.1-在 VPC 内使用 NAT 网关将所有流量路由进出网关。网关将具有弹性 IP 和互联网流量,然后将您的服务器端的 NAT 网关列入白名单。在 AWS 文档中查找 NAT 网关。
1.2-创建一个到您数据中心的后端服务器的虚拟专用网关/*** 连接,并通过它路由流量。 1.2.a-在专用私有子网中创建您的实例。 1.2.b-将您这边的整个子网列入白名单,来自该子网的任何请求都将被允许进入。 1.2.c 确保子网中的路由正确。
(我故意跳过 2,因为那是 1.2)
3.-懒惰的方式: 利用 AWS Opsworks 做两件事: 第一:分配弹性 IP 的资源池。 第二:按需启动 LOAD 实例并自动从池中为它们分配一个弹性 ip。 对于第二部分,您需要将 24/7 实例设为最小值,将 Load 实例设为 MAX。 AWS Opsworks 现在允许 Cloud Watch 警报触发实例启动,因此它与 ASG 非常相似。 Opsworks 的唯一缺点是实例不会终止,而是会在负载下降时停止,并且您必须事先“创建”实例。此外,您还依赖 Chef solo 来启动您的实例,但这是将 EIP 自动分配给我能找到的新创建实例的唯一方法。
干杯!
【讨论】:
以上是关于具有弹性 IP 的 Amazon EC2 自动扩展实例的主要内容,如果未能解决你的问题,请参考以下文章
了解 Amazon 为 EC2 实例分配的公共 DNS 的使用以及弹性 IP 的重要性
Node.js - 在 Amazon EC2 上获取主机 IP 地址
Amazon 弹性文件系统策略 (EFS) - 允许通过 IAM 角色访问 EC2 实例不起作用