• Redis集群伸缩


    集群扩容

    前提准备,目前集群中一共有6台机器,端口号分别是638163826383638463856386

    1) 准备新节点

    准备两个新节点,端口号为63876388,配置和以前集群配置一样,并启动这个两个节点。

    2) 加入集群

    进入集群内任意节点,使用cluster meeet命令即可使新节点加入到集群当中。

    新节点刚开始都是主节点状态,但是由于没有负责的槽,所以不能接受任何读写操作。对于新节点的后续操作一般有两种选择:

    ◆ 为它迁移槽和数据实现扩容

    ◆ 作为其他主节点的从节点负责故障转移

    redis-trib.rb工具也实现了为现有集群添加新节点的命令,还实现了直接添加从节点的支持,对于上述的扩容操作,可以采用如下命令实现新节点的加入:

    redis-trib.rb add-node 127.0.0.1:6387 127.0.0.1:6381

    redis-trib.rb add-node 127.0.0.1:6388 127.0.0.1:6381

    3) 迁移槽和数据,将6381中的部分槽迁移到6387中

      a) 使用redis-trib.rb槽重分片命令:

      

      b) 需要确认迁移的槽数量,输入2000个

      

      c) 输入6387的节点ID作为目标节点,目标节点只能指定一个:

      

      d) 之后输入源节点的ID,这里分别输入6381、6382和6383三个节点ID最后用done表示结束:

      

      e) 数据迁移之前会打印出所有的槽从源节点到目标节点的计划,确认计划无误后输入yes执行迁移工作,计划执行完成之后reshard命令自动退出。

    4) 添加从节点

    扩容之前把6387和6388节点加入到集群,节点6387迁移了部分槽和数据作为主节点,但相比其他主节点目前还有从节点,因此该节点不具备故障转移的能力。这时需要把节点6388作为6387的从节点,从而保证整个集群的高可用。这里需要注意,在集群模式下,以前的主从配置命令slaveof添加从节点操作不再支持,执行如下命令,启动ID为master的ID,即6387的ID:

    验证配置结果:

    集群收缩

    目前的节点状态如下:

    1) 迁移槽

    现在将6383和6386节点下线,6383是主节点,负责槽11589-16383,6386是它的从节点,下线6383之前需要把负责的槽迁移到其他节点。

    收缩正好和扩容迁移方向相反,6383变为源节点,其他主节点变为目标节点,源节点需要把自己负责的4795个槽均匀地迁移到其他主节点中。由于每次执行reshard命令只能有一个目标节点,因此需要执行3次reshard命令,分别迁移1598、1598、1599个槽。迁移过程和扩容的操作一样,只是需要注意目标节点和源节点,不用迁移错了。

    迁移完毕之后,查出集群状态,可以看到6383节点已经不负责任何槽了

    2) 忘记节点

    可以使用redis的cluster forget {downNodeId}命令来忘记节点,但是推荐使用redis-trib.rb命令来忘记节点,其中的ID为要下线的节点ID:

    3) 再次查看集群状态

  • 相关阅读:
    USACO 5.4.2 tour
    USACO 4.4.2 milk6
    USACO 6.1.2 rectbarn
    USACO 4.1.4 cryptcow
    VC++学习笔记之ActiveX
    VC++学习笔记之MFC应用程序创建/执行顺序和MFC运行机制
    FusionCharts Free(一)使用方法和应用实例(asp.net)
    FusionCharts Free(二)使用方法详细解析
    VC++学习笔记之MFC消息映射机制
    MFC基本知识沉淀
  • 原文地址:https://www.cnblogs.com/Oven5217/p/8994390.html
Copyright © 2020-2023  润新知