Redis sentinel连接从nodeJS超时



Am正在尝试使用ioredisnodeJS连接redis sentinel实例。尽管尝试了多种可用选项,但我无法连接redis sentinel实例。我们尚未配置哨兵密码。但是,能够使用StackExchange.Redis.net core连接相同的redis sentinel实例。请在下面找到nodeJS代码,

import { AppModule } from './app.module';
import IORedis from 'ioredis';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const ioredis = new IORedis({
sentinels: [
{ host: 'sentinel-host-1' },
{ host: 'sentinel-host-2' },
{ host: 'sentinel-host-3' },
],
name: 'mastername',
password: 'password',
showFriendlyErrorStack: true,
});
try {
ioredis.set('foo', 'bar');
} catch (exception) {
console.log(exception);
}
await app.listen(3000);
}
bootstrap();

我们得到的错误是,

[ioredis] Unhandled error event: Error: connect ETIMEDOUT
node_modulesioredisbuiltredisindex.js:317:37)
at Object.onceWrapper (node:events:475:28)
at Socket.emit (node:events:369:20)
at Socket._onTimeout (node:net:481:8)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7)

.net core中使用的连接字符串如下,

Redis_Configuration = "host-1,host-2,host-3,serviceName=mastername,password=password,abortConnect=False,connectTimeout=1000,responseTimeout=1000";

为了他人的利益而回答这个问题。一切都很好,但这个nodeJS包正在将redis实例解析为我无法从本地访问的私有IP。所以,必须把它放在子网组上,让它工作。然而,FYI-.net core包不能解析为私有IP,因此我可以从本地访问实例。

"传递给构造函数的参数与用于连接到单个节点的参数不同;

尝试用sentinelPassword替换password

相关内容

  • 没有找到相关文章

最新更新