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

本地尝试连接到ec2实例上运行的redis,但尽管所有流量都是入站的,仍出现错误

邓光赫
2023-03-14

redis通过守护进程在ec2实例中运行

ps aux | grep redis-server
redis     1182  0.0  0.8  38856  8740 ?        Ssl  21:40   0:00 /usr/bin/redis-server 127.0.0.1:6379

netstat -nlpt | grep 6379
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::6379                 :::*                    LISTEN      1388/redis-server *

暂时我已将网络入站设置为所有流量,因此可能不是网络安全问题。

Type         Protocol Port Range   Source      Description
All traffic  All      All          0.0.0.0/0

但是当我尝试从python端访问时:

import redis
r = redis.StrictRedis(host='ec2-xx-xxx-xx-xx.compute-1.amazonaws.com', port=6379, db=0)
r.set('foo', 'bar')
r.get('foo')

我得到以下错误:

连接到ec2-xx-xxx-xx-xx.compute-1.amazonaws.com:6379时出现错误111。连接被拒绝。

尽管网络入站对所有流量开放并且redis在ec2实例中运行良好,但什么可能导致此类问题?

共有1个答案

梁宪
2023-03-14

您的redis没有侦听来自外部的连接,而是只侦听本地连接。

tcp        0      0 127.0.0.1:6379 

以下内容适用于Ubuntu。编辑/etc/redis/redis。conf将其绑定到0.0.0.0:

# bind 127.0.0.1
bind 0.0.0.0

然后重新启动服务:

sudo service redis-server restart

警告:不要在您的安全组中允许0.0.0.0。任何人都可以。相反,只允许特定的IP或CIDR。

 类似资料:
  • 我遇到了一个问题,我的 Linux EC2 实例无法执行任何出站(ping、卷曲、yum 更新、wget、跟踪路由等),除非我的 VPC ACL 入站规则集中有一个允许所有流量的规则。 我的安全组和VPC都有出站规则,允许所有流量访问所有内容。 附加到实例的安全组入站列表如下所示: VPC入站列表看起来像这样(规则200就是我说的规则): 如果我删除允许所有流量的入站规则(规则 200),则我无法

  • 我正在一个盒子上运行redis 2.8.7。从其他框(两者都是aws ec2)我正在发出这个命令 redis-cli -h ,但我得到这个错误 无法连接到Redis:6379:连接被拒绝 框1上的端口6379为框2打开。此外,没有redis的id/pwd

  • 我不确定我是否正确理解http-keep-alive,在我看来,它应该重用tcp连接,而不是构建一个新的连接。然而,我发现了一些非常奇怪的事情,似乎很难预料http keep-alive的行为。 服务器:NodeJS&Express^4.16.3,我使用Wireshark分析结果 情况1: null 客户端 null 情况2: null 结果:建立了另外5个tcp连接(在图片中只有4个,因为屏幕截

  • 问题内容: 连接到在Amazon EC2集群中运行的Java应用程序时遇到问题。我们绝对允许“ JMX端口”(通常是RMI注册表端口) 和 服务器端口(完成大部分工作)都进入所讨论实例的安全组。Jconsole连接但似乎挂起并且从不显示任何信息。 我们正在使用以下内容运行我们的java: 我们尝试过: Telnet 连接 到端口,但不显示任何信息。 我们可以在ssh上使用remote-X11在实例

  • 我们在连接到运行在AmazonEC2集群中的Java应用程序时遇到了问题。我们明确地允许“JMX端口”(它通常是RMI注册表端口)和服务器端口(它完成了大部分工作)对所讨论的实例的安全组。Jconsole连接但似乎挂起并且从未显示任何信息。 Telnets连接到端口,但不显示任何信息。 我们可以通过ssh使用remote-X11在实例本身上运行,它可以连接并显示信息。因此JRE将其导出到本地。 打