我有多个在不同的 Amazon EC2 实例上运行的 Web 应用程序服务器。目前,我可以通过为 EC2 实例分配弹性 IP,然后直接使用弹性 IP 或将购买的域名指向弹性 IP 来调用 API,从而在客户端设备上访问这些服务器。但是,我现在遇到了弹性 IP 限制,这意味着我必须先从一个实例取消分配弹性 IP,然后再将其分配给新实例,但我不想这样做,因为旧的应用程序仍在使用中。
我四处寻找是否可以找到解决方案,并且发现了一些有希望的事情,例如:
- 动态域名解析
- 私有云平台
- 弹性负载均衡器
但我对它们了解不多,因为我在基础设施方面还是个新手。我在这里寻找的是有人能给我指明正确的方向,告诉我应该使用哪种方法以及为什么使用,最好能给我一些材料,让我能更好地详细理解这些概念。
TLDR:在 AWS 的一个帐户上,创建多个不相关的可公开访问的 Web 应用程序(每个应用程序都有自己单独的 EC2 实例)的最佳方法是什么,而不会遇到弹性 IP 限制?
答案1
设置限额是为了防止您意外花费过多,并保护 AWS 基础设施免受用户的侵害。如果您有更多资源(如弹性 IP)的合理需求,并且账户信誉良好,则只需请求增加限额即可。
要做到这一点,请进入AWS 支持,选择“创建案例”、“增加服务限额”,然后选择您想要增加的资源。
我还会请您注意仪表板中的“AWS 服务配额”,它显示了默认限制和当前限制。
其他方式
将 EIP 和 EC2 实例放在线上是可以的。在某些情况下,更好的方法是创建一个应用程序负载均衡器,将其与您在 AWS 证书管理器中创建的 https 证书关联,并让其将流量代理到您的 EC2 实例私有 IP。这样做成本稍高一些,但可以让您的服务器与互联网进行额外的隔离。它还可以帮助缓解某些类型的 DDOS 攻击。
答案2
常用的方式是设置反向代理,将流量发送到不同的上游服务器。
例如:
https://example.com/api1 -> 10.100.10.1
https://example.com/api2 -> 10.100.10.2
有多种方式来设置此类反向代理。可以设置一个 EC2 实例,并将 nginx 配置为反向代理。
AWS 还提供不同方法来实现相同的功能:AWS API 网关、应用程序负载均衡器和 Cloudfront。
答案3
实施 IPv6。AWS 可以为实例或负载均衡器分配全局唯一地址。无需配额或更改地址,因为不可能耗尽您的个人 /56 前缀。
不幸的是,如果您的用户尚未拥有 IPv6,那么这是一个不完整的解决方案。如果您需要更多,请请求增加弹性 IP 地址的配额。