我们正在使用 ElasticBeanstalk 设置一些 Node.js 环境。目前,我们使用 Redis 作为 session 存储,它在 ElastiCache 中设置。
当我 ssh 进入 EC2 实例并 netcat Redis 存储时,我可以确认网络允许通过端口 6379 进行连接:
[ec2-user@<redacted>]$ nc -v <redacted>.usw2.cache.amazonaws.com 6379
Connection to <redacted>.usw2.cache.amazonaws.com 6379 port [tcp/*] succeeded!
EC2 安全组的出站策略:0.0.0.0/0
Redis 安全组的入站策略允许在端口 6379 上从我的 EC2 安全组传入 TCP。
这似乎支持我们在 netcat 成功 ping Redis 存储时看到的观察结果。但是,当尝试连接到 Redis 时,Node.js 应用程序本身会挂起。我可以通过运行以下命令在 EC2 实例上复制此内容:
[ec2-user@<redacted>]$ ./redis-cli -c -h <redacted>.usw2.cache.amazonaws.com -p 6379 ping
这只是挂起,我们没有收到 PONG
回复。鉴于 netcat 的成功,我相当有信心这不是安全组问题,但这里肯定存在一些看似奇怪的事情。
有什么想法吗?
最佳答案
问题在于 ElastiCache 配置为传输和静态加密。事实证明,对于这个特定的实例,我们不需要它,所以一旦我们删除它,事情就开始工作了。如果我们保留加密,实际的解决方案是什么,待定。
关于amazon-web-services - 从 ElasticBeanstalk EC2 到 Redis (ElastiCache) 的连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090822/