使用ioRedis连接到ElasticCache时出现随机SSL握手错误

时间:2018-09-20 20:25:40

标签: node.js ssl redis ioredis elastic-cache

我正在尝试连接到ElastiCache群集,该群集在使用ioRedis从节点脚本传输时进行了加密。有时我的脚本有效,其他时候我得到Error: 140736319218624:error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:1216:

这是我所有的代码:

var Redis = require('ioredis');
var nodes = [{
host: 'clustercfg.name.xxxxxx.region.cache.amazonaws.com',
port: '6379',
}];
var cluster = new Redis.Cluster(nodes,{
redisOptions: {
    tls: {}
}});

cluster.set('aws', 'test');
cluster.get('aws', function (err, res) {
    console.log(res);
    if (err) {
        console.error(err)
    }
    cluster.disconnect()
});

1 个答案:

答案 0 :(得分:2)

我相信ssl握手错误是ioredis中竞争条件错误的副作用。

最近几天,我一直在同一个问题上苦苦思索(ioredis版本4.0.0)。我只是无法可靠地将ioredis连接到我们的Elasticache集群。我会看到相同的间歇性错误。

  

错误:140618195700616:错误:140940E5:SSL例程:ssl3_read_bytes:ssl   握手失败:../ deps / openssl / openssl / ssl / s3_pkt.c:1216:

您可以通过在节点环境中设置“ DEBUG = ioredis:*”来查看ioredis调试输出。完成此操作后,我可以看到错误发生时伴随着几条类似于以下内容的消息:

  

2018-10-06T18:24:38.287Z ioredis:cluster:connection池断开连接   xxx.usw2.cache.amazonaws.com:6379,因为该节点不保存任何内容   插槽

我尝试了node-redis和redis-clustr,它与Elasticache一起正常工作。