我在ElastiCache下创建了cache.t2.small
Redis。可以。
我有端点:portal-test.abcdef.ab.0001.abcd1.cache.amazonaws.com
。
我ssh
进入实例(通过ubuntu@ip-172-xx-xx-xx
和runcloud@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
的入站流量:
在runcloud(用于此实例)上,我还打开了端口并成功部署了防火墙规则:
相同的超时时间。我想念什么?
答案 0 :(得分:2)
我找到了解决方法。
罪魁祸首:
我创建的Redis 不在同一VPC /可用区域/子网中 作为Laravel应用所在的EC2 实例。第一个具有IP 10.x.x.x>,而EC2实例为172.x.x.x。我认为这种不匹配阻止了 两端互相交谈。
解决方案:
创建Redis时,只需将其分配到与Laravel婴儿所在的现有EC2实例相同的VPC 。还要重用与打开端口6379相同的安全组(假设您在创建Redis时选择此端口为默认端口)。
现在将SSH输入EC2,并输入以下类型:
redis-cli -h endpoint-from-your-aws-redis-dashboard -p 6379 ping
如果得到:
PONG
你是赢家。
答案 1 :(得分:1)
马特的答案将我引向正确的方向。但是,稍作调整即可使我的连接正常工作。我查看了安全组,然后发现我具有开放连接的安全组(即Custom TCP 6379
)没有绑定到我的ElastiCache Redis实例。
要在ElastiCache实例中修改安全组,请执行以下操作:
请等待,直到完成对ElastiCache实例的修改,然后将其SSH到EC2实例中。最后,尝试使用Matt的ping
pong
方法。
希望有帮助!