Redis集群如何启动一定数量的节点

How to start certain number of nodes in Redis cluster

要在 Redis 中创建和启动集群,我在

中使用 create-cluster.sh 文件

/redis-3.04/utils/create-cluster

通过使用它,我可以通过更改来创建任意数量的节点:

设置

PORT=30000 
TIMEOUT=2000 
NODES=10 
REPLICAS=1.

我想知道我是否可以在开始时创建例如 10 个节点(5 个主节点和 5 个从节点)但只启动 4 个主节点和 4 个从节点(会面并加入)。

提前致谢。

是的。如果现有集群的负载增加,您可以添加更多节点。

基本步骤是:

  1. 启动新的 redis 实例 - 假设您想再添加 2 个 master 和 slave(总共 4 个 redis 实例)

  2. 然后使用 redis-trib 实用程序执行以下操作:

    redis-trib.rb add-node <new master node:port> <any existing master> 例如./redis-trib.rb add-node 192.168.1.16:7000 192.168.1.15:7000

  3. 之后这个新节点会被分配一个id。请注意,id 和 运行 以下命令将从节点添加到我们在上一步

    中添加的节点

    /redis-trib.rb add-node --slave --master-id <master-node-id> <new-node> <master-node> ./redis-trib.rb add-node --slave --master-id 6f9db976c3792e06f9cd252aec7cf262037bea4a 192.168.1.17:7000 192.168.1.16:7000 其中 6f9db976c3792e06f9cd252aec7cf262037bea4a 是 192.168.1.16:7000 的 ID。

  4. 使用类似的步骤,您可以再添加 1 个主从对。

  5. 由于这些节点不包含任何可服务的插槽,您已将一些插槽从现有主节点移动到新主节点。(重新分片

  6. 你可以运行按照命令/重新分片步骤:

    6.1 ./redis-trib.rb reshard <any-master-ip>:<master-port>

    6.2 它会问:你想移动多少槽(从 1 到 16384)? => 输入你想移动的槽数

    6.3 然后会问:接收节点ID是多少?

    6.4 输入需要移动槽的节点id。 (新主人)

    6.5 会提示: 请输入所有源节点 ID。 键入 'all' 以将所有节点用作哈希槽的源节点。 输入所有源节点 ID 后键入 'done'。 源节点 #1:输入源节点 ID 或全部

    6.6 然后会提示信息说 Moving slot n to node node-id like

    从 37d10f18f349a6a5682c791bff90e0188ae35e49 移动插槽 10960 从 37d10f18f349a6a5682c791bff90e0188ae35e49 移动插槽 10961 从 37d10f18f349a6a5682c791bff90e0188ae35e49

    移动插槽 10962

    6.7 它会询问:你想继续执行建议的重新分片计划(yes/no)吗? 输入 Yes 并输入 你完成了 .

注意:如果数据很大,重新分片可能需要一些时间。

很少的命令:

  1. 要知道集群中的所有节点和集群节点的节点id:

    redis-cli -h node-ip -p node-port 集群节点

    例如redis-cli -h 127.0.0.1 -p 7000 个集群节点

  2. 要了解集群中的所有插槽:

    redis-cli -h 127.0.0.1 -p 7000 个集群槽

参考:https://redis.io/commands/cluster-nodes

希望对您有所帮助。