我有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中创buildCNAME
logging作为其提供的名称的别名。
如果您在自己的实例上运行Redis,那么最简单的方法是使用私有静态IP地址。 另一种select是使用dynamicDNS,但由于DNS传播延迟,此设置很脆弱。
更新:使用弹性IP将是您的第三select,但使用公共IP地址进行应用程序和Redis之间的内部通信不是很安全,这是浪费。