从 Amazon AWS EC2 服务器上的 Node.js 连接到 Redis 服务器时出错
Posted
技术标签:
【中文标题】从 Amazon AWS EC2 服务器上的 Node.js 连接到 Redis 服务器时出错【英文标题】:Error connecting to Redis Server from Node.js on Amazon AWS EC2 server 【发布时间】:2012-06-08 15:29:25 【问题描述】:我正在尝试在 Amazon AWS Ec2 微实例上运行 node.js 服务器和 Redis 服务器。
我已经安装了 Redis 服务器并且 redis-server 命令运行良好。
我使用 'Forever' 来保持 Redis-Server 运行。它工作正常。
但是当我启动我的节点服务器时,它无法连接到 Redis-Server。
它给出了以下错误 -
Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED
做一个'Forever List'表明redis服务器运行良好。
info: Forever processes running
data: uid command script forever pid logfile uptime
data: [0] _pXw node app.js 26670 26671 /home/ubuntu/.forever/_pXw.log 0:0:0:13.463
data: [1] ylT1 node redis-server 25013 26681
我已经验证了redis-server启动时是从6379端口启动的。
谁能帮我解释为什么会发生这个错误以及我如何解决这个问题?
我使用以下代码连接到 Redis 。我为 Redis 安装了客户端库。
var redis = require("redis"),
client = redis.createClient();
当我在本地主机上运行代码时一切正常。
【问题讨论】:
您是否使用 ping-pong 例程检查了 AWS 上的 redis 客户端-服务器连接。接下来,也许您应该尝试以 root 身份永久运行它。 感谢 almypal。我尝试了乒乓球测试,但测试失败了。接下来,我以 root 身份运行它,而没有使用 forever 。测试奏效了。现在我的 node.js 应用程序也可以正常连接。你认为问题永远是这样吗?我的问题现在已经解决了。如果您将回复作为答案发布,我会接受。谢谢! 一个不相关的问题。根据您的指示,我通过 'sudo redis-server &' 在后台运行了 redis-server。现在如何停止 redis-server ?发出“ps”命令不会列出 redis-server。所以我无法让 PID 杀死它。 'Fg' 命令也没有效果。 在 Ubuntu 上,您可以使用 sudo fuser -v 5000/tcp 检查在端口 5000 上运行的服务,然后使用 sudo fuser -vk 5000/tcp 终止该服务。 【参考方案1】:如果您打算在 AWS 之外使用 Redis,您可以尝试帮助我从本地 Nodejs 应用程序连接在 AWS 上工作的 Redis 服务器的后续步骤:
1) 在 AWS 上:sudo cp /etc/redis/redis.conf.backup /etc/redis/redis.conf。备份可以为您节省大量精力来找出问题所在:)
2) 在 AWS 上:停止 redis-server:sudo /etc/init.d/redis-server stop
3) 在 AWS 上:打开 /etc/redis/redis.conf 并找到一行 bind 127.0.0.1。在 bind 0.0.0.0 下复制并粘贴新行。所以你可以有几行带有 bind 参数。顺便说一句,连接的端口也可以在 redis.conf 中更改
4) 在 AWS 上:启动 redis-server:sudo /etc/init.d/redis-server start
5) 在 AWS 上:输入 redis-cli ping 如果 redis-server 正常启动,您应该会看到 PONG 消息
6) 在 AWS 上:现在为您正在运行的实例打开 Sequrity Group,并使用“类型”添加新规则 - 自定义 TCP 规则,端口范围 - 6379
7) 在您的本地 Nodejs 应用程序中:
var redis = require("redis");
var redisClient = redis.createClient(redis_port, redis_host);
nodejsredisaws
【讨论】:
【参考方案2】:您是否使用 ping-pong 例程检查了 AWS 上的 redis 客户端-服务器连接。接下来也许你应该尝试以 root 身份运行它而不是永远。
【讨论】:
以上是关于从 Amazon AWS EC2 服务器上的 Node.js 连接到 Redis 服务器时出错的主要内容,如果未能解决你的问题,请参考以下文章
从 EC2 上的自定义 AMI 创建 AWS Opsworks 实例时未启动