当试图连接到Redis的ElastiCache时,带有TLS的createCluster()返回ECONNRESET

bvjveswy  于 2023-02-28  发布在  Redis
关注(0)|答案(1)|浏览(146)

我正在构建一个使用node-redis连接到ElastiCache Redis的nodejs应用程序。我正在尝试启用传输中加密。
以下是我目前掌握的情况:

const redis = require('redis');

const socket = {
    host: redisAddress,
    port: redisPort,
    tls: true
}

const redisCluster = redis.createCluster({ rootNodes: [{ socket }] })
redisCluster.connect()

不幸的是,我得到了以下错误:

UnhandledPromiseRejectionWarning: Error: read ECONNRESET
twh00eeo

twh00eeo1#

node-redis documentation on clustering
rootNodes-作为群集一部分的根节点的数组,将用于获取群集拓扑。数组中的每个元素都是客户端配置对象。无需指定群集中的每个节点,3个节点应足以可靠地连接并从服务器获取群集配置
这意味着我们在rootNodes中指定的客户端配置适用于根节点,但不是适用于拓扑中的每个节点,您需要做的是也指定defaults
defaults-群集中每个客户端的默认配置值。例如,在指定要连接的ACL用户时使用此值
您的代码最终将类似于:

const redis = require('redis');

const socket = {
    host: redisAddress,
    port: redisPort,
    tls: true
}

const redisCluster = redis.createCluster({
    rootNodes: [{ socket }],
    defaults: { socket: { tls: true } }
})
redisCluster.connect()

相关问题