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 должен быть Я использую?

0
задан 8 April 2016 в 20:37
1 ответ

Если вы используете ElastiCache с Redis, вам следует использовать DNS вашего кластера. Обычно он выглядит так redis.j5k8wa.0001.use1.cache.amazonaws.com , и вы можете получить его из конфигурации вашего узла. Amazon рекомендует создать запись CNAME в вашем DNS в качестве псевдонима для предоставленного ими имени.

Если вы запускаете Redis на своем собственном экземпляре, то самый простой способ - использовать для него частный статический IP-адрес. Другой альтернативой является использование динамического DNS, но эта настройка хрупка из-за задержки распространения DNS.

Обновление: Использование эластичного IP-адреса будет вашим третьим вариантом, но использование общедоступного IP-адреса для внутренней связи между вашим приложением и Redis не очень безопасно и это расточительно.

2
ответ дан 4 December 2019 в 13:42

Теги

Похожие вопросы