laravel - 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 中:
解决方案
这听起来像是导致超时的安全组问题。
Elasticache 集群始终是私有的,因此如果您使用公共 IP 地址,则需要将其更新为您的实例/子网/VPC 的私有 IP 地址范围。
Elasticache 集群是 VPC 中的资源,因此需要允许网络传输才能访问集群。
访问您的集群页面中提供了更多信息。
附加配置
这就是问题所在。我还需要删除现有的 Redis 实例并创建另一个没有启用 AUTH 令牌的实例。
推荐阅读
- java - 当您仍然需要在实现它的每个类中分别定义每个方法体时,接口有什么好处?
- python - Passing parameter works fine for SQL but not Hadoop SQL in Python string
- r - 为什么 tbl_regression(和手动 95%CI)中 OR 的 95%CI 与logistic.display 中的 95%CI 不同,并且与 p 值不匹配?
- python - 新的 Postgresql 数据库:列“id”是整数类型,但在创建超级用户时表达式是 uuid 类型
- node.js - 节点发布方法 FormData 未定义
- reactjs - 如何创建固定侧边栏和可滚动的主要内容?
- java - 非主键的 JPA Hibernate FetchType.EAGER 和 FetchMode.JOIN
- javascript - 如何制作条件参数类型?
- ecmascript-6 - 尝试对未通过 npm 安装的库使用 ES2015 模块系统
- azure - Azure Functions App 的项目级文化设置