首页 > 解决方案 > Laravel:连接 AWS ElasticCache Redis 超时

问题描述

我正在开发一个 Laravel 应用程序。我使用 Redis,并且为此使用 AWS ElasticCache 服务。我正在尝试从我的 Laravel 应用程序连接到 Redis。但它正在超时。这就是我所做的。

我通过运行以下命令安装了 Predis 库。

composer require predis/predis

然后我在 ElastiCache 服务控制台中创建了一个 Redis 实例,启用 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 实例的安全组在入站规则中,如下所示:

在此处输入图像描述

这次我收到了这个错误:

在此处输入图像描述

我也编辑了 Redis 的 SG 以添加以下入站规则。

在此处输入图像描述

正如您在屏幕截图中看到的那样,安全组也在同一个 VPC 中:

在此处输入图像描述

标签: laravelamazon-web-servicesredisamazon-elasticache

解决方案


这听起来像是导致超时的安全组问题。

Elasticache 集群始终是私有的,因此如果您使用公共 IP 地址,则需要将其更新为您的实例/子网/VPC 的私有 IP 地址范围。

Elasticache 集群是 VPC 中的资源,因此需要允许网络传输才能访问集群。

访问您的集群页面中提供了更多信息。

附加配置

这就是问题所在。我还需要删除现有的 Redis 实例并创建另一个没有启用 AUTH 令牌的实例。


推荐阅读