当前位置: 首页 > 知识库问答 >
问题:

Redis-cli连接到Amazon ElastiCache Redis集群挂断

邹博裕
2023-03-14

我已经从源代码安装和编译了Redis,并试图连接到Amazon ElastiCache(Redis)集群。

我可以毫无问题地连接到默认的本地主机,但尝试连接到AWSendpoint会导致无限的挂起。

默认情况下:

$ redis-server /etc/redis.conf  # daemonized, uses localhost
$ redis-cli ping
PONG
$ sudo service redis_6379 status
Redis is running (12919)
$ redis-cli shutdown  # or sudo service redis_6379 stop

现在,这是连接到endpoint的尝试,来自AWS留档主题的副本:

redis-cli -c -h my_example_endpoint_name.eaogs8.ng.0001.use1.cache.amazonaws.com -p 6379 ping

这会无限挂起,而不会向stderr/stdout发出任何消息。

(请注意,这是一个endpoint名称示例;我已验证我使用的是AWS控制台中列出的主要endpoint。)

我怀疑这可能与AWS端群集的安全组设置有关,但不确定具体可以/应该修改什么。我很欣赏关于什么可能阻碍连接的建议,并可以根据需要提供有关集群本身的信息。

共有3个答案

胡昊
2023-03-14

在确认安全组并看到我们启用了“传输中的加密”后,我们的redis cli命令(包括提供密码的askpass)仍然无限期挂起,并且verbose标记没有显示任何内容。首先调用redis cli自定义构建的aws文档是不必要的,但需要在命令中包含--tls标志,然后它才能工作。

这种形式的命令应该有效

<代码>redis-cli-h

例如,redis cli-h主机。redis。abc7bh。usw2.cache。amazonaws。com--tls-p 6379-密码ping

通过mac上的brew安装的redis cli docker映像版本4.0.10和6.2.6以及redis cli 6.2.6正常工作。

要使用docker镜像运行,您可以使用docker run-it redis: 6.2.6 /bin/bash这样的命令,然后运行上面的redis-cli命令。

戚星腾
2023-03-14

EC2实例的安全组和它试图连接的ElastiCache集群的安全组没有正确对齐,因此禁止了连接。

来自AWS文档:

所有ElastiCache集群都设计为可以从Amazon EC2实例访问。最常见的场景是从同一Amazon虚拟私有云(Amazon VPC)中的Amazon EC2实例访问ElastiCache集群。

我采取的纠正措施是:

  1. 导航到ElastiCache仪表板

您现在应该能够连接到以下内容(示例):

redis-cli -c -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379 ping
华宏逸
2023-03-14

我还看到对redis cli的调用无限挂起,但在我的情况下,这并不是由于安全组配置不正确造成的。

相反,这是因为我创建了Redis集群,并将“加密在途”选项设置为“是”。这意味着需要通过SSL隧道访问我的数据库endpoint,而redis cli则不需要。

对于我的应用程序,传输中的加密实际上是不必要的,所以我创建了一个新的Redis集群,但没有选择该选项。有关使用途中加密时需要采取哪些不同措施的更多详细信息,请参见:https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

 类似资料:
  • 由于单个redis实例不符合我的要求,我选择了redis cluster。我用三个节点组成集群,并将数据填充到集群中。当我使用JedisCluster从集群获取数据时,它比单个实例花费更多的时间。那么,将绝地与redis星系团连接起来的正确方式是什么呢。我如何利用连接池将绝地与redis集群连接起来?

  • 我在从Lambda函数连接Elasticache时遇到问题,我已完成以下操作: 创建了一个新的安全组 Internet正常工作,我通过打开URL验证stackoverflow.com。但是Elasticache自动发现超时。是否需要进行任何额外的配置? 更新I将安全组的入站规则添加到端口6379,现在仍然超时。

  • 当我试图按照以下部署指南连接到主节点时,我面临着MasternotFounderRorr:https://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/ 连接主Redis Sentinel节点的代码是: 我面对红魔。哨兵。MasternotFounderRorr:没有为“MyMaster”错误找到master

  • 我使用spring boot data redis连接到redis群集,使用版本2.1.3,配置如下: 但是,在操作过程中,始终会收到警告异常消息,如下所示: 这似乎是莴苣的问题,如何映射远程主机

  • 我已经使用以下指南成功地设置了一个密码保护的redis群集: 我使用ruby和下面的连接字符串…我做错了吗? 我得到的错误是:

  • 问题内容: 我有一个带有redis的laravel(5.3)应用程序,用于会话(使用predis)。只要我使用单个redis节点(使用 config / database.php中的 默认方法),一切都可以正常工作。一旦我切换到Redis集群,尽管我开始像50%的时间一样出现MOVED错误(基于谷歌搜索,我知道这应该由predis管理,但不是这样)。 我尝试将cluster参数更改为true,但是