Назад | Перейти на главную страницу

AWS: По какому IP-адресу я должен ссылаться на инстанс EC2, на котором запущен Redis?

У меня 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 не очень безопасно и расточительно.