无法使用redis-cli连接到AWS Redis端点。连接超时。

9

我在ElastiCache下创建了一个名为cache.t2.small的Redis实例,它已经可用。

我有一个端点:portal-test.abcdef.ab.0001.abcd1.cache.amazonaws.com

我尝试通过ssh连接到实例(尝试使用ubuntu@ip-172-xx-xx-xxruncloud@ip-172-xx-xx-xx)。我正在尝试通过键入以下命令使用redis-cli连接:

redis-cli -h portal-test.abcdef.ab.0001.abcd1.cache.amazonaws.com -p 6379 ping

我期望得到PONG,但实际上我得到了:

无法连接到Redis:portal-test.abcdef.ab.0001.abcd1.cache.amazonaws.com:6379:连接超时

我进入我的EC2实例,为端口6379定义了入站流量:

enter image description here

在我用于此实例的runcloud中,我还打开了该端口并成功部署了防火墙规则:

enter image description here

仍然超时。我错过了什么吗?


只是一个建议,出站规则允许所有流量吗? - Grynets
你是否将Elasticache端口设置为公共访问?(你只展示了EC2入站安全组) - number5
2个回答

15

我已经找到解决方案。

问题原因:

我创建的 Redis 不在 Laravel 应用所在的 EC2 实例的相同 VPC / 可用区 / 子网中。第一个 Redis 的 IP 是 10.x.x.x,而 EC2 实例的 IP 是 172.x.x.x。我认为这种不匹配会阻止双方互相通信。

解决方案:

在创建 Redis 时,简单地将其分配给与您现有的 Laravel baby 所在的 EC2 实例相同的 VPC。同时重复使用同一安全组,在其中打开端口 6379(假设您在创建 Redis 时选择了此端口作为默认端口)。

现在,SSH 到你的 EC2 中,并从内部键入以下命令:

redis-cli -h endpoint-from-your-aws-redis-dashboard -p 6379 ping

如果你得到:

PONG

那么你就是赢家。


1
太好了,这帮了我很多。谢谢。 - Jonathan Bird
Laravel "baby"是什么? - Peter
你的Laravel项目... - Matt Komarnicki

3

Matt的回答指引了我正确的方向。但是,做出小调整后我的连接才工作。我查看了安全组,并注意到我已经打开连接的安全组(即Custom TCP 6379)没有绑定到我的ElastiCache Redis实例。

要修改您的ElastiCache实例中的安全组:

  • 单击您的实例(确保它已突出显示)
  • 单击操作下拉菜单
  • 修改
  • VPC安全组(单击铅笔图标)
  • 选择安全组并保存
  • 最后,单击修改

等待您的ElastiCache实例完成修改,然后ssh进入您的EC2实例。最后,尝试Matt的pingpong方法。

希望能有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接