1 分片和槽

   1 redis-cluster 一共16384个槽

   2  redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 取余, 可以获取key对应的hash slot,然后分配给指定的槽管理,每个hash slot中存储多个k-v值

  3 使用哈希槽的好处就是增删节点都非常容易管理(基于机器),因为增删节点都要对指定的槽进行移动操作,但是在上层是不关心的,只要有具体hash槽,就能访问

2 慢日志
   redis-cluster的慢日志需要指定的master进行手动处理
4 故障转移机制
  1 先进行主观下线 某个master节点发现了问题master的不可用状态
  2 再进行客观下线 其他所有master节点都发现了问题master的不可用状态,然后回收掉相应的hash slot
  3 最后选举  在这个问题master的slave成员中进行选举出一个推举为新master
  4 切换完成
  5 当出问题的master重新加入集群时变更为slave成员
  6 默认状态下如果某个master故障转移失败则整个集群不可用
5 常见命令
   1 cluster info 查看集群基本信息
      cluster_state: ok 表示集群可以正常接受查询请求
      cluster_slots_fail:0 表示失败的slot数量,如果不为0,代表集群状态有问题,将无法提供查询服务,除非cluster-require-full-coverage被设置为no
      cluster_known_nodes N 已知的所有集群成员
  2 cluster nodes 查看集群成员和角色
    1 member_id(成员标识,用来进行在集群内操作) 2 host:port 3 role(master 0/slave-master_id) 4 健康检测时间戳 5 成员客户端的连接数 6 master slot的分配范围
  3 cluster slots  查看具体的槽分配信息
    1 槽的分配信息  2 主从端口 IP地址和唯一 标识

 6 常见操作

   一增加一组主从

     redis-cli  --cluster add-node new-master exits-master

 2   为new-master分配槽

     redis-cli --cluster reshard exots-master

         1  移动的槽位个数

         2  new-master-node-id

        3  all 代表随机抽取  或者指定的exits-master-node-id

        4  是否开始执行迁移

  3  增加slave

    redis-cli  --cluster add-node new-slave exits-master ,默认是加进去都是称为matser节点

   .redis-cli -c -h  new-slave  -p 6386

          cluster replicate d282c41660c14959195bb0a4c4c8a61a0d6be0fc 进行复制

  4 cluster node进行观察

 二 删除从节点不影响槽位 直接删除即可

    redis-cli  --cluster del-node  slave

 三 常用命令

redis-cli -h -p -a  -c cluster slots| xargs  -n8| awk '{print $3":"$4"->"$6":"$7}' | sort -nk2 -t ':' | uniq   可视化节点操作

 

相关文章: