![如何获取 EC 实例的静态 IP?或者,如何使用](https://linux22.com/image/679892/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%20EC%20%E5%AE%9E%E4%BE%8B%E7%9A%84%E9%9D%99%E6%80%81%20IP%EF%BC%9F%E6%88%96%E8%80%85%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8.png)
我只是在 Amazon AWS 上设置我们的 Rails 应用程序。我们有 2 个 EC2 实例,一个用于 Rails 应用程序,另一个用于 Redis。然后是 Amazon RDS for MySQL。
当我将我们的 Rails 应用程序与 Redis 连接时,我需要设置包含 IP 地址的 Redis URL。但是,如果我重新启动 Redis 实例,其 IP 地址将发生变化,并且我输入到 Rails 应用程序的 Redis URL IP 将不起作用(因为重新启动 Redis 实例后会生成一个新的 IP)。
如何处理这种行为?如何避免在重新启动 EC2 实例时“丢失”它?Amazon RDS 可能也是如此 - 这是我在以下位置设置主机的方式database.yml
:
host: myapp-production.cg4mxcg62ca0.us-west-2.rds.amazonaws.com
先感谢您。
答案1
问题 1:
不应使用弹性 IP 地址来保留“后端”服务器的地址。原因有 2 个:
- 通常,您不希望后端服务器暴露在互联网中,并且弹性 IP 地址仅适用于从互联网进入您的 EC2 实例。
- 如果您通过其弹性 IP 地址从一个 EC2 实例连接到另一个 EC2 实例,则该连接将离开您的 VPC 并重新进入 VPC。这会使安全性更加困难,并会产生数据流量费用。
相反,您应该通过其私有 IP 地址引用后端服务器。停止并重新启动 EC2 实例不会更改私有 IP 地址。只有当 EC2 实例终止时,内部 IP 地址才会被释放。当您启动 EC2 实例时,您可以选择其私有 IP 地址。
您可以为后端服务器创建 DNS 条目(Route 53 私有托管区域)。
您可以做的另一件事(但这不是必需的)是使用您的私有 IP 地址创建一个网络接口。然后将该网络接口附加到 EC2 实例。如果您需要新的后端服务器,则只需将网络接口移动到新实例,私有 IP 地址就会随之移动。
问题 2:
RDS 实例端点不会随时间而改变。
此外,RDS 实例无法停止。它们只能被删除。但是,即使您删除 RDS 实例并重新创建它,如果它具有相同的 RDS 实例 ID,那么它的端点将保持一致。
因此,通过主机名引用 RDS 实例是安全的,也是最佳实践myapp-production.cg4mxcg62ca0.us-west-2.rds.amazonaws.com
。
最后的想法:
将您的 Redis 服务器和 RDS 实例放入私人的您的 VPC 中的子网。公众没有理由需要访问它们。您的 Rails 应用实例应该位于公共子网中,因为公众将通过该实例访问您的应用。