我在Aws EC2上找到了node_redis的一些奇怪的行为。
假设我有两个EC2实例。
第一个用于DB(Redis,MYSQL等),它有一个像这样的IP ip-1-1-1-1.eu-west-1.compute.internal
第二个是基于NodeJS的应用程序,它的IP是ip-2-2-2-2.eu-west-1.compute.internal
在安全组中我添加了这个:
6379 sg-351a0441 (default)
6379 sg-333b9044 (quicklaunch-0)
我使用node_redis模块与Redis进行通信。我需要从一个实例连接到另一个实例。
所以现在我(可能)可以从另一个连接到Redis(第一台服务器):
redis = require('redis');
client = redis.createClient(6379, 'ip-1-1-1-1.eu-west-1.compute.internal');
但这种方式会导致错误:
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED
尝试将(!)连接到127.0.0.1
,而不是1.1.1.1
。
我说过“好的。让我们尝试另一种方式!”
redis = require('redis');
client = redis.createClient(6379, '1.1.1.1');
而且......砰!同样的错误:
Error: Redis connection to 1.1.1.1:6379 failed - connect ECONNREFUSED
那么,也许完整的redis网址会有帮助吗?
redis = require('redis');
client = redis.createClient(6379, 'redis://1.1.1.1');
否:(
Error: Redis connection to redis://10.248.118.246:6379 failed - getaddrinfo EADDRINFO
使用内部网址时也一样:
Error: Redis connection to redis://ip-1.1.1.1.eu-west-1.compute.internal:6379 failed - getaddrinfo EADDRINFO
那么,它有什么问题?提前谢谢。