AWS:我应该在运行 Redis 的 EC2 实例上引用什么 IP 地址?

AWS:我应该在运行 Redis 的 EC2 实例上引用什么 IP 地址?

我有 2 个 EC2 实例 - 一个是生产应用程序,另一个是 Redis。我从第一个实例连接到 Redis。

这是我设置 Sidekiq 的方式:

Sidekiq.configure_server do |config|
    config.redis = { url:       "redis://deployer_redis@PUBLIC_IP:6379/#{env_num}", 
                     namespace: "rails_app_#{Rails.env}" }
  end

  Sidekiq.configure_client do |config|
    config.redis = { url:       "redis://deployer_redis@PUBLIC_IP:6379/#{env_num}", 
                     namespace: "rails_app_#{Rails.env}" }
  end

当我重新启动 Redis 实例时,PUBLIC_IP 将会不同,并且 Rails 应用程序将无法连接到 Redis。

我尝试使用 PRIVATE_IP 代替 PUBLIC_IP(因为 PRIVATE_IP 在 期间不会改变),但没用。没有错误,只是作业没有被处理。

在应用程序中设置EC2实例的IP的推荐方法是什么?

编辑:

另外,当我 ssh 到服务器时,我应该使用哪个 IP?

答案1

如果您将 ElastiCache 与 Redis 结合使用,则应使用集群的 DNS。它通常看起来像这样redis.j5k8wa.0001.use1.cache.amazonaws.com,您可以从节点配置中获取它。Amazon 建议CNAME在您的 DNS 中创建记录作为他们提供的名称的别名。

如果你在自己的实例上运行 Redis,那么最简单的方法是为其使用私有静态 IP 地址。另一种选择是使用动态 DNS,但由于 DNS 传播延迟,这种设置很脆弱。

更新:使用弹性 IP 是您的第三种选择,但使用公共 IP 地址进行应用程序和 Redis 之间的内部通信不是很安全并且很浪费。

相关内容