Случайная ошибка рукопожатия SSL при подключении к ElastiCache с помощью ioRedis

Я пытаюсь подключиться к кластеру 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()
});

person Evan Snapp    schedule 20.09.2018    source источник
comment
Ошибка рукопожатия ssl может быть вызвана многими причинами. Будет сложно отладить без дополнительной регистрации с обеих сторон. Может ли быть так, что имя хоста иногда разрешается в разные IP-адреса, и вы попадаете на разные серверы?   -  person Patrick Mevzek    schedule 21.09.2018
comment
Другая сторона — это служба ElastiCache, управляемая AWS, поэтому у меня нет доступа к конфигурации ssl другой стороны.   -  person Evan Snapp    schedule 21.09.2018


Ответы (1)


Я считаю, что ошибка рукопожатия ssl является побочным эффектом ошибки состояния гонки в ioredis.

Последние несколько дней я ломал голову над одной и той же проблемой (версия ioredis 4.0.0). Я просто не смог надежно подключить ioredis к нашему кластеру elasticache. Я бы увидел ту же прерывистую ошибку.

Ошибка: 140618195700616: ошибка: 140940E5: процедуры SSL: ssl3_read_bytes: ошибка рукопожатия SSL:../deps/openssl/openssl/ssl/s3_pkt.c:1216:

Вы можете просмотреть выходные данные отладки ioredis, установив «DEBUG=ioredis:*» в среде вашего узла. Как только я это сделал, я увидел, что когда произошла ошибка, она сопровождалась несколькими сообщениями, подобными следующему:

2018-10-06T18:24:38.287Z ioredis:cluster:connectionPool Отключить xxx.usw2.cache.amazonaws.com:6379, так как узел не занимает ни одного слота

Я пробовал node-redis и redis-cluster, он отлично работает с elasticache.

person user1170291    schedule 06.10.2018