我在 EC2 上设置了一个自动扩展组以及一个 RDS Postgres 实例。我没有使用 ELB。也许我应该...
挑战在于,每次创建新的 EC2 实例时,它都会分配一个唯一的公共 IP 地址。这意味着需要将新的入站规则应用于 RDS 的安全组,以允许此新 EC2 实例通过端口 5432(postgresql)连接到 RDS。
我还遇到了 Route 53 问题,因为需要将新的 IP 地址添加到 DNS“A 记录”才能正确解析 URL。
有没有办法设置 AWS 来帮我做这件事,或者我是否需要使用 boto 编写一些 python 代码?
答案1
这意味着需要对 RDS 的安全组应用一条新的入站规则,允许这个新的 EC2 实例通过端口 5432(postgresql)连接到 RDS。
我建议使用私有 IP,而不是使用公有 IP 来制定安全组规则。在同一个 VPC 中运行 EC2 和 RDS,然后在 RDS 的安全组规则中允许包含 EC2 实例的整个 VPC 子网 IP 范围。
我还遇到了 Route 53 问题,因为需要将新的 IP 地址添加到 DNS“A 记录”才能正确解析 URL。
你基本上有 3 个选择:
- 使用 ELB
- 编写一个在每个实例上运行并自动更新 DNS 的安装脚本
- 使用 OpsWorks,它允许您使用 EIP 创建 HAProxy 实例,然后在新应用服务器实例启动时自动将其添加到该 HAProxy 实例
答案2
不要将每个 EC2 实例的 IP 地址单独添加到入站安全组。而是允许来自 EC2 实例安全组的入站流量。然后,任何使用该安全组的 EC2 实例都将被允许根据同一规则进行访问。
一般来说,如果需要外部访问,自动扩展组最好用在 Elastic Load Balancer 后面。这是因为自动扩展组通常用于需要根据负载或其他指标动态启动和停止实例的情况。当客户端连接到您的组时,通常它不应该关心它实际连接到哪个组。通过为每个实例分配单独的 IP 地址,外部世界需要跟踪所有这些实例。