一、集群架构

1、概念

业务发展过程中遇到的峰值瓶颈

  • redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到10万/秒
  • 内存单机容量达到256G,当前业务需求内存容量1T

使用集群的方式可以快速解决上述问题

集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果;
Redis——集群搭建

Redis——集群搭建

2、作用

Redis——集群搭建

3、Redis集群原理

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

Redis——集群搭建

  • 当客户端执行写(set)命令后, 会将set name zhangsan经过CRC16算法, 计算出其哈希槽的位置, 然后根据该位置存储到对应的Node节点内, 当执行读命令(get), 会根据槽的位置, 去指定节点内取数据; 不同key的哈希槽不同, 此时读写数据就会在不同的Node内进行操作; 实现了对Redis集群的操作;
  • 故障转移, 将宕机的master节点的槽 由 选举出来的slave来接管; 不会从新分配
  • 如果动态添加一个Node, 此时要将其他Node的槽都分出来一些, 给新的Node; 保持对16384个槽进行均分; 将槽的value也会分出去

二、Redis集群搭建

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

1、准备工作

1、准备环境安装ruby以及redis集群依赖
  • yum install -y ruby rubygems
  • gem install redis-xxx.gem
2、在一台机器创建7个目录

Redis——集群搭建

3、每个目录复制一份配置文件

[[email protected] ~]# cp redis-4.0.10/redis.conf 7000/
[[email protected] ~]# cp redis-4.0.10/redis.conf 7001/
[[email protected] ~]# cp redis-4.0.10/redis.conf 7002/
[[email protected] ~]# cp redis-4.0.10/redis.conf 7003/
[[email protected] ~]# cp redis-4.0.10/redis.conf 7004/
[[email protected] ~]# cp redis-4.0.10/redis.conf 7005/
[[email protected] ~]# cp redis-4.0.10/redis.conf 7006/

Redis——集群搭建

4、修改不同目录配置文件(每一个Redis服务的配置都要改)
  • port 6379 … //修改端口
  • bind 0.0.0.0 //开启远程连接
  • cluster-enabled yes //开启集群模式
  • cluster-config-file nodes-port.conf //集群节点配置文件
  • cluster-node-timeout 5000 //集群节点超时时间
  • appendonly yes //开启AOF持久化
5、指定不同目录配置文件启动七个节点

Redis——集群搭建

6、查看进程

Redis——集群搭建

2、创建集群

1.复制集群操作脚本到bin目录中
2.创建集群
  • ./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

7000, 7001, 7002为主节点, 7003为7000的slave节点, 7004为7001的slave节点, 7005为7002的slave节点

Redis——集群搭建

3、集群创建成功出现如下提示

Redis——集群搭建

3、查看集群状态

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

4、操作集群

Redis——集群搭建
Redis——集群搭建
get name, 扔会去指定槽的master节点取数据
Redis——集群搭建

5、集群节点状态说明

  • 主节点
    主节点存在hash slots,且主节点的hash slots 没有交叉
    主节点不能删除, 因为删除后, hash slot就不完整了, 集群不可以操作
    一个主节点可以有多个从节点
    主节点宕机时多个副本之间自动选举主节点

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

当主节点kill后, 会将该主节点对应的slave节点, 充当master节点, hash slot也会被拿过去;

6、集群节点的操作

Redis——集群搭建

相关文章:

猜你喜欢
  • 2021-05-28
  • 2021-07-24
  • 2021-11-22
  • 2021-10-06
  • 2022-01-23
  • 2021-12-24
相关资源
相似解决方案