【问题标题】:Laravel: connecting the AWS ElasticCache Redis is timing outLaravel:连接 AWS Elasticache Redis 超时
【发布时间】:2020-11-01 22:57:15
【问题描述】:

我正在开发一个 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 中:

【问题讨论】:

  • 您是否允许从您的实例对安全组进行入站访问?
  • 您好,我正在使用启用身份验证的模式。我不能只使用密码连接吗?我正在将我的应用程序部署到 EB。这将是额外的配置。
  • 您还需要通过安全组进行入站访问:)
  • 嗨...您解决了这个问题...感谢您分享您的解决方案如何解决它...我有同样的问题...

标签: laravel amazon-web-services redis amazon-elasticache


【解决方案1】:

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

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

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

更多信息请参见Accessing Your Cluster 页面。

附加配置

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

【讨论】:

  • 您好,我也更新了EC2实例的安全组入站规则。但它仍然无法正常工作。
  • elasticache 集群需要更改安全组,而不是 EC2 :)
  • 嗨@Chris,我也更新了 Redis 的安全组。我更新了问题。我收到网关超时错误,但它仍然无法正常工作。
  • 嗯,确认您没有更改实例中的 NACL?并且 elasticache 集群共享您的应用程序所在的同一个 VPC?您可以尝试允许 tcp 端口 6379 的入站 0.0.0.0/0 来测试吗?还要确认它在端口 6379 上运行(您可以在控制台中看到)
  • 我认为我没有更改 NACL,因为我还没有触及任何这些设置。 “允许入站 0.0.0.0/0 用于 tcp 端口 6379”意味着我必须更新 Redis 或 EC2 实例的安全性?
猜你喜欢
  • 2020-10-26
  • 2018-12-04
  • 2021-06-12
  • 2018-07-16
  • 2018-05-21
  • 2021-07-23
  • 2022-01-02
  • 2017-05-23
  • 2018-12-29
相关资源
最近更新 更多