Redis群集reshard期间群集重定向过多

时间:2017-09-28 14:49:20

标签: redis redis-cluster ioredis

Redis版本:3.2.10

ioredis版本:3.1.4

最近我测试了在redis集群上运行重新分片操作,而集群负载很高,客户端正在使用ioredis node.js库,偶尔在客户端上我们在reshard操作期间看到了以下错误。

Too many Cluster redirections. Last error: ReplyError: MOVED 8155 172.31.37.232:6379.
Error: Too many Cluster redirections. Last error: ReplyError: MOVED 8155 172.31.37.232:6379
at Cluster.handleError (/data/api/node_modules/ioredis/lib/cluster/index.js:554:30)
at Command.command.reject (/data/api/node_modules/ioredis/lib/cluster/index.js:444:13)
at Redis.exports.returnError (/data/api/node_modules/ioredis/lib/redis/parser.js:75:18)
at JavascriptReplyParser.returnError (/data/api/node_modules/ioredis/lib/redis/parser.js:25:13)
at JavascriptReplyParser.run (/data/api/node_modules/redis-parser/lib/javascript.js:135:18)
at JavascriptReplyParser.execute (/data/api/node_modules/redis-parser/lib/javascript.js:112:10)
at Socket.<anonymous> (/data/api/node_modules/ioredis/lib/redis/event_handler.js:107:22)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:548:20)

我目前正在为ioredis使用以下选项的默认值: maxRedirections 16 retryDelayOnFailover 100ms

这是否意味着在reshard期间,插槽数据传输的时间超过1600毫秒?

我广泛地知道迁移插槽的过程如下:

  1. 使用CLUSTER SETSLOT将目标节点槽设置为导入状态 进口。
  2. 使用CLUSTER SETSLOT MIGRATING将源节点槽设置为迁移状态。
  3. 使用CLUSTER GETKEYSINSLOT命令从源节点获取密钥,并使用MIGRATE命令将它们移动到目标节点。
  4. 在源或目标中使用CLUSTER SETSLOT NODE。
  5. 但是,在上述哪个步骤中客户端无法获取或设置关键数据?

    对于上下文,在此测试期间,每个节点的运行速度高达100k op /秒。

0 个答案:

没有答案