У меня 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 пока не меняется), но это не сработало. Ошибок не было, просто задания не обрабатывались.
Какой рекомендуемый способ установить IP-адреса экземпляров EC2 в приложениях?
РЕДАКТИРОВАТЬ:
Кроме того, когда я отправляю ssh на сервер, какой IP должен быть Я использую?
Если вы используете ElastiCache с Redis, вам следует использовать DNS вашего кластера. Обычно он выглядит так redis.j5k8wa.0001.use1.cache.amazonaws.com
, и вы можете получить его из конфигурации вашего узла. Amazon рекомендует создать запись CNAME
в вашем DNS в качестве псевдонима для предоставленного ими имени.
Если вы запускаете Redis на своем собственном экземпляре, то самый простой способ - использовать для него частный статический IP-адрес. Другой альтернативой является использование динамического DNS, но эта настройка хрупка из-за задержки распространения DNS.
Обновление: Использование эластичного IP-адреса будет вашим третьим вариантом, но использование общедоступного IP-адреса для внутренней связи между вашим приложением и Redis не очень безопасно и это расточительно.