Laravel: время подключения AWS ElasticCache Redis истекло

Я работаю над приложением Laravel. Я использую Redis и использую для этого сервис AWS ElasticCache. Я пытаюсь подключиться к Redis из своего приложения Laravel. Но это тайм-аут. Это то, что я сделал.

Я установил библиотеку Predis, выполнив следующую команду.

composer require predis/predis

Затем я создал экземпляр Redis в сервисной консоли ElastiCache, включив AUTH для установки моего токена пароля.

Затем я устанавливаю переменные в файлах .env.

CACHE_DRIVER=redis
REDIS_CLIENT=predis
REDIS_HOST=master.laravelredistest.8sm3xo.euw1.cache.amazonaws.com
REDIS_PASSWORD=mypassword
REDIS_PORT=6379

Когда я запускаю код для подключения к Redis, я получаю следующую ошибку.

Operation timed out [tcp://master.laravelredistest.8sm3xo.euw1.cache.amazonaws.com:6379]

Чего не хватает в моей конфигурации и как это исправить?

Я также обновил группу безопасности Redis, чтобы включить группу безопасности экземпляра EC2 во входящие правила следующим образом:

введите здесь описание изображения

На этот раз я получаю эту ошибку:

введите здесь описание изображения

Я отредактировал SG Redis, чтобы добавить следующее входящее правило.

введите здесь описание изображения

Группы безопасности тоже находятся в том же VPC, как вы можете видеть на скриншоте:

введите здесь описание изображения


person Wai Yan Hein    schedule 12.07.2020    source источник
comment
Разрешили ли вы входящий доступ к группе безопасности из вашего экземпляра?   -  person Chris Williams    schedule 12.07.2020
comment
Привет, я использую режим с поддержкой аутентификации. Могу ли я не подключиться только с помощью пароля? Я развертываю свое приложение в EB. Это будет дополнительная конфигурация.   -  person Wai Yan Hein    schedule 12.07.2020
comment
Вам также необходимо иметь входящий доступ через группу безопасности :)   -  person Chris Williams    schedule 12.07.2020
comment
Привет ... вы исправили это ... ценю, если вы поделитесь своим решением, как вы это исправите ... У меня такая же проблема ...   -  person Usman Jdn    schedule 26.01.2021


Ответы (1)


Это похоже на проблему с группой безопасности, вызывающую тайм-аут.

Кластеры Elasticache всегда являются частными, поэтому, если вы используете общедоступный IP-адрес, его необходимо обновить, чтобы он стал диапазоном частных IP-адресов вашего экземпляра/подсети/VPC.

Кластер Elasticache — это ресурс в вашем VPC, поэтому для доступа к кластеру необходимо разрешить сетевой транзит.

Дополнительные сведения см. в Доступ к вашему кластеру страница.

Дополнительная конфигурация

В этом проблема. Мне также нужно было удалить существующий экземпляр Redis и создать еще один без включенного токена AUTH.

person Chris Williams    schedule 12.07.2020
comment
Привет, я также обновил входящие правила группы безопасности экземпляра EC2. Но это все еще не работает. - person Wai Yan Hein; 12.07.2020
comment
Кластеру elasticache нужны изменения группы безопасности, а не EC2 :) - person Chris Williams; 12.07.2020
comment
Привет @Chris, я также обновил группу безопасности Redis. Я обновил вопрос. Я получаю сообщение об ошибке тайм-аута шлюза, и он все еще не работает. - person Wai Yan Hein; 12.07.2020
comment
Хм, чтобы подтвердить, что вы не меняли NACL в своем экземпляре? И кластер elasticache использует тот же VPC, в котором находится ваше приложение? Не могли бы вы попробовать разрешить входящий трафик 0.0.0.0/0 для tcp-порта 6379 просто для проверки? Также, чтобы подтвердить, что он работает на порту 6379 (вы можете увидеть это в консоли) - person Chris Williams; 12.07.2020
comment
Я не думаю, что изменил NACL, потому что я еще не трогал ни одну из этих настроек. разрешение входящего трафика 0.0.0.0/0 для tcp-порта 6379 означает, что мне нужно обновить безопасность экземпляра Redis или EC2? - person Wai Yan Hein; 12.07.2020
comment
Да, в основном хочу убедиться, что IP-адрес по какой-то причине не ограничивает группу безопасности. - person Chris Williams; 12.07.2020
comment
Группа безопасности Redis или EC2? Какой SG мне нужно обновить? - person Wai Yan Hein; 12.07.2020
comment
Давайте продолжим обсуждение в чате. - person Chris Williams; 12.07.2020