geeky_monster
geeky_monster

Reputation: 8812

Error connecting to Redis Server from Node.js on Amazon AWS EC2 server

I am trying to run a node.js server and a Redis server on an Amazon AWS Ec2 micro instance .

I have installed Redis Server and the redis-server command runs fine .

I use 'Forever' to keep the Redis-Server running . And it works fine .

But when I start my Node server , it fails to connect to the Redis-Server .

It gives the following error -

Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 

Doing a 'Forever List' shows that the redis server is running fine .

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 

I have verified that when the redis-server starts , it starts at 6379 port .

Can anyone help me explain why this error is happening and how I fix this ?

I use the following code to connect to Redis . I have the client libraries installed for Redis .

var redis = require("redis"),
        client = redis.createClient();

Everything runs fine when I run the code on my localhost .

Upvotes: 0

Views: 4214

Answers (2)

Artem Zaika
Artem Zaika

Reputation: 1221

If you are going to use Redis outside of AWS you can try next steps that helped me to connect Redis Server working on AWS from my local Nodejs application:

1) On AWS: sudo cp /etc/redis/redis.conf.backup /etc/redis/redis.conf. Backup saves you a lot of energy figuring out whats wrong :)

2) On AWS: stop redis-server: sudo /etc/init.d/redis-server stop

3) On AWS: open /etc/redis/redis.conf and find a line bind 127.0.0.1. Copy and paste new line below bind 0.0.0.0. So you could have several lines with bind parameter. BTW, port of connection can be changed in redis.conf as well

4) On AWS: start redis-server: sudo /etc/init.d/redis-server start

5) On AWS: type redis-cli ping you should see PONG message if redis-server started ok

6) On AWS: Now open Sequrity Group for your running isntance and add New Rule with "Type" - Custom TCP Rule, Port Range - 6379

7) In your local Nodejs application:

var redis = require("redis");
var redisClient = redis.createClient(redis_port, redis_host);

Upvotes: 3

patalmypal
patalmypal

Reputation: 6712

Have you checked the redis client-server connection on AWS using the ping-pong routine. Next maybe you should try running it without forever, as root.

Upvotes: 0

Related Questions