redis集群操作

比眉伴天荒 2023-10-03 22:33 113阅读 0赞

Redis集群

      • 1 集群
      • 2 集群架构图
      • 3 集群细节
      • 4 集群搭建
        • 4.1.创建集群
        • 4.2.查看集群状态
        • 4.3.添加主节点
        • 4.4.添加从节点
        • 4.5.删除副本节点
        • 4.6.集群在线分片

1 集群

Redis在3.0后开始支持Cluster(模式)模式,目前redis的集群支持节点的自动发现,支持slave-master选举和容错,支持在线分片(sharding shard )等特性。

2 集群架构图

在这里插入图片描述

3 集群细节

  1. - 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
  2. - 节点的fail是通过集群中超过半数的节点检测失效时才生效.
  3. - 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
  4. - redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

在这里插入图片描述

4 集群搭建

判断一个是集群中的节点是否可用,是集群中的所用主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,所以搭建redis集群时建议节点数最好为奇数。
搭建集群至少需要三个主节点,三个从节点,至少需要6个节点

  1. 准备环境安装ruby以及redis集群依赖

    1. yum install -y ruby rubygems
    2. gem install redis-xxx.gem
  2. 在一台机器创建7个目录

    1. [root@localhost ~]# mkdir 7000 7001 7002 7003 7004 7005 7006
  3. 每个目录复制一份配置文件

    1. [root@localhost ~]# cp redis-7.0.0/redis.conf 7000/
    2. [root@localhost ~]# cp redis-7.0.0/redis.conf 7001/
    3. [root@localhost ~]# cp redis-7.0.0/redis.conf 7002/
    4. [root@localhost ~]# cp redis-7.0.0/redis.conf 7003/
    5. [root@localhost ~]# cp redis-7.0.0/redis.conf 7004/
    6. [root@localhost ~]# cp redis-7.0.0/redis.conf 7005/
    7. [root@localhost ~]# cp redis-7.0.0/redis.conf 7006/
  4. 修改不同目录配置文件

    1. port 6379 ..... //修改端口
    2. bind 0.0.0.0 //开启远程连接
    3. cluster-enabled yes //开启集群模式
    4. cluster-config-file nodes-port.conf //集群节点配置文件
    5. cluster-node-timeout 5000 //集群节点超时时间
    6. appendonly yes //开启AOF持久化
  5. 指定不同目录配置文件启动七个节点

    1. [root@localhost bin]# ./redis-server /root/7000/redis.conf
    2. [root@localhost bin]# ./redis-server /root/7001/redis.conf
    3. [root@localhost bin]# ./redis-server /root/7002/redis.conf
    4. [root@localhost bin]# ./redis-server /root/7003/redis.conf
    5. [root@localhost bin]# ./redis-server /root/7004/redis.conf
    6. [root@localhost bin]# ./redis-server /root/7005/redis.conf
    7. [root@localhost bin]# ./redis-server /root/7006/redis.conf
  6. 查看进程

    1. [root@localhost bin]# ps aux|grep redis
4.1.创建集群
  1. 复制集群操作脚本到bin目录中

    1. [root@localhost bin]# cp /root/redis-7.0.0/src/redis-trib.rb .
  2. 创建集群

    1. ./redis-trib.rb create --replicas 1 192.168.202.205:7000 192.168.202.205:7001 192.168.202.205:7002 192.168.202.205:7003 192.168.202.205:7004 192.168.202.205:7005 192.168.202.205:7006
  3. 集群创建成功出现如下提示

    1. [OK] ALL XXX slots covered.
4.2.查看集群状态
  1. 查看集群状态 check [原始集群中任意节点] [无]

    ./redis-trib.rb check 192.168.202.205:7000

  2. 集群节点状态说明

    • 主节点
      主节点存在hash slots,且主节点的hash slots 没有交叉
      主节点不能删除
      一个主节点可以有多个从节点
      主节点宕机时多个副本之间自动选举主节点
    • 从节点
      从节点没有hash slots
      从节点可以删除
      从节点不负责数据的写,只负责数据的同步
4.3.添加主节点
  1. 添加主节点 add-node [新加入节点] [原始集群中任意节点]

    1. ./redis-trib.rb add-node 192.168.1.158:7006 192.168.1.158:7005
    2. - 注意:
    3. 1.该节点必须以集群模式启动
    4. 2.默认情况下该节点就是以master节点形式添加
4.4.添加从节点
  1. 添加从节点 add-node —slave [新加入节点] [集群中任意节点]

    1. ./redis-trib.rb add-node --slave 192.168.1.158:7006 192.168.1.158:7000
    2. - 注意:
    3. 当添加副本节点时没有指定主节点,redis会随机给副本节点较少的主节点添加当前副本节点
  2. 为确定的master节点添加主节点 add-node —slave —master-id master节点id [新加入节点] [集群任意节点]

    1. ./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000
4.5.删除副本节点
  1. 删除节点 del-node [集群中任意节点] [删除节点id]

    1. ./redis-trib.rb del-node 127.0.0.1:7002 0ca3f102ecf0c888fc7a7ce43a13e9be9f6d3dd1
    2. - 注意:
    3. 1.被删除的节点必须是从节点或没有被分配hash slots的节点
4.6.集群在线分片
  1. 在线分片 reshard [集群中任意节点] [无]

    1. ./redis-trib.rb reshard 192.168.1.158:7000

发表评论

表情:
评论列表 (有 0 条评论,113人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis常规操作

    一、故障转移 redis集群实现了高可用,当集群内少量节点出现故障时,通过故障转移可以保证集群正常对外提供服务。 当集群里某个节点出现了问题,redis集群内的节点通过