zoukankan      html  css  js  c++  java
  • Redis的集群


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

    集群的细节

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

    集群搭建

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

    1.准备环境安装ruby以及redis集群依赖
    - yum install -y ruby rubygems

    - gem install redis-xxx.gem
    2.在一台机器创建6个目录在加一个目录测试
    mkdir 7000 7001 7002 7003 7004 7005 7006
    3.每个目录复制一份配置文件
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7000/
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7001/
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7002/
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7003/
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7004/
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7005/
    [root@localhost ~]# cp redis-6.0.9/redis.conf 7006/

    4.修改不同目录配置文件
    - port 6379 ...//修改端口 分别改成对应的端口
    - bind 0.0.0.0 //开启远程连接
    - cluster-enabled yes //开启集群模式
    - cluster-config-file nodes-port.conf //集群节点配置文件 port为对应的端口号
    - cluster-node-timeout 5000 //集群节点超时时间
    - appendonly yes //开启aof持久化
    //下面可不改
    - daemonize yes //守护进程 不占用窗口,后台运行
    - dbfilename dump.rdb 改为 dump-7000.rdb //如果是一台机器上运行的话 7000改为对应的端口号
    - appendfilename "appendonly.aof" 改为 "appendonly-7000.aof" //如果是一台机器上运行的话 7000改为对应的端口号
    - pidfile /var/run/redis.pid 改为 /var/run/redis_7000.pid //redis的进程文件

    5.指定不同目录配置文件启动七个节点
    - [root@localhost bin]# ./redis-server /root/7000/redis.conf
    - [root@localhost bin]# ./redis-server /root/7001/redis.conf
    - [root@localhost bin]# ./redis-server /root/7002/redis.conf
    - [root@localhost bin]# ./redis-server /root/7003/redis.conf
    - [root@localhost bin]# ./redis-server /root/7004/redis.conf
    - [root@localhost bin]# ./redis-server /root/7005/redis.conf
    - [root@localhost bin]# ./redis-server /root/7006/redis.conf


    小插曲 :删除文件夹 rm -rf 7000

    6.查看进程
    - [root@localhost bin]# ps aux|grep redis
    一定要有[cluster] 这个标志

    创建集群
    1.复制集群操作脚本到bin目录中
    - [root@localhost bin]# cp /root/redis-6.0.9/src/redis-trib.rb /usr/redis/bin/

    2.创建集群
    - ./redis-trib.rb create --replicas 1 192.168.139.129:7000 192.168.139.129:7001 192.168.139.129:7002 192.168.139.129:7003 192.168.139.129:7004 192.168.139.129:7005

    查看集群状态

    1.查看集群状态 check [原始集群中任意节点] [无]
    - ./redis-trib.rb check 192.168.202.205:7000

    小插曲 :redis客户端登录 - [root@localhost bin]# ./redis-cli -p 7000 -c (-c代表集群)

     2.集群节点状态说明
    - 主节点
    主节点存在hash slots ,且主节点的hash slots 没有交叉
    主节点不能删除
    一个主节点可以有多个从节点
    主节点宕机时多个副本之间自动选举主节点

    -从节点
    从节点没有hash slots
    从节点可以删除
    从节点不负责数据的写,只负责数据的同步

    3.添加主节点
      1.添加主节点 add-node [新加入节点] [原始集群中任意节点]

    - ./redis-trib.rb add-node 192.168.139.129:7006 192.168.139.129:7000
    - 注意
      1.该节点必须以集群模式启动
      2.默认情况下该节点就是以master节点形式添加

    4.添加从节点
       1.添加从节点 add-node --slave [新加入节点] [集群中任意节点]
        - ./redis-tribe.rb add-node --slave 192.168.139.129:7006 192.168.139.129:7000
        -注意:
        当添加副本节点时没有指定主节点,redis会随机给副本节点较少的主节点添加副本节点

       2.为确定的master节点添加主节点 add-node --slave --master-id master节点id [新加入节点] [集群中任意节点]
        - ./redis-tribe.rb add-node --slave --master-id 3csadjh6jdj6njn4vnn3nvfnf7n 192.168.139.129:7006 192.168.139.129:7000

    5.删除副本节点
       1.删除节点 del-node [集群中任意节点] [删除节点id]
        - ./redis-trib.rb del-node 192.168.139.129:7006 3csadjh6jdj6njn4vddnn3nvfnf7n

       - 注意:
       1.被删除的节点必须是从节点或没有被分配的hash slots的节点

    6.集群在线分片
       1.在线分片 reshard [集群中任意节点] [无]
       - ./redis-trib.rb reshard 192.168.139.129:7000

  • 相关阅读:
    Fibonacci Again 分类: HDU 2015-06-26 11:05 13人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-LCM的个数 分类: 比赛 2015-06-26 10:37 18人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-完美素数 分类: 比赛 2015-06-26 10:36 15人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-经济节约 分类: 比赛 2015-06-26 10:34 19人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-字符的变化 分类: 比赛 2015-06-26 10:32 46人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-飞花的鱼塘 分类: 比赛 2015-06-26 10:30 43人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-飞花的线代 分类: 比赛 2015-06-26 10:29 10人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-飞花的糖果 分类: 比赛 2015-06-26 10:27 15人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-最大收益问题 分类: 比赛 2015-06-26 10:25 51人阅读 评论(0) 收藏
    山东理工大学第七届ACM校赛-学区房问题 分类: 比赛 2015-06-26 10:23 89人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/pmbb/p/14098369.html
Copyright © 2011-2022 走看看