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不会改变),但它不起作用。 没有错误,但只是工作没有处理。

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

编辑:

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

如果您在Redis中使用ElastiCache,那么您应该使用群集的DNS。 它通常看起来像这个redis.j5k8wa.0001.use1.cache.amazonaws.com ,你可以从你的节点configuration。 亚马逊build议在您的DNS中创buildCNAMElogging作为其提供的名称的别名。

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

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