Redis linux - 集群(经典3主3从)

  • 前言
  • 每个节点知道彼此之间的关系,也会知道自己的角色,当然它们也会知道自己存在于一个集群环境中,它们彼此之间可以交互、通信,比如:ping请求,pong响应。这些关系都会保存到某个配置文件中,每个节点都有,在搭建集群服务的时候配置
  • 客户端需要和集群建立连接,只需要与其中一个建立连接关系就可以
  • 某个节点挂掉,也是通过超过半数的节点进行检测确认的结果,客观下线后主从切换,与哨兵模式主从切换一个逻辑
  • Redis中存在很多插槽,又称之为槽节点,用于存储数据,集群最多节点也是与槽节点有关
  • 集群容错
  • 构建Redis集群,需要至少6个节点,master*3,slave*3,以此组成高可用集群,称之为经典集群3主3从,容错性更加
  • 可以理解为3主3从6哨兵
  • 配置文件
# 开启集群模式
cluster-enabled yes
# 每一个节点需要有一个配置文件,需要6份。每个节点处于集群的角色都需要告知其他所有节点,彼此知道,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,我们不用管。如果你要重新创建集群,那么把这个文件删了就行
cluster-config-file nodes-201.conf
# 超时时间,超时则认为master宕机,随后主备切换,具体时间根据当前网络与服务器配置调试,这里建议12000
#时间短容易误判,时间就容易集群瘫痪
cluster-node-timeout 12000
# 开启AOF
appendonly yes
#主备切换认证密码,与master密码(requirepass)保持一致
masterauth <密码>
  • 查看帮助文档        
  • redis-cli --cluster help

springboot redis三主三从 配置 redis为什么三主三从_插槽

  • redis客户端中执行命令
  • 注意1:如果你使用的是redis3.x版本,需要使用redis-trib.rb来构建集群,最新版使用C语言来构建了,这个要注意
  • 注意2:以下为新版的redis5.x构建方式
  • 注意3:集群权限密码统一
  • 注意4:启动前,工作空间内的用于单实例哨兵模式持久化文件(rdb、aof)会影响集群,删除处理
  • redis-cli -a 密码 --cluster create ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 --cluster-replicas 1
  • 没有设置密码可以省略 -a 密码
  • 创建集群,主节点和从节点比例为1,1-3为主,4-6为从,1和4,2和5,3和6分别对应为主从关系,这也是最经典用的最多的集群模式
  • 最后的‘1’表示mater与slave分配比例
  • 会默认分配主从关系,一般yes即可

springboot redis三主三从 配置 redis为什么三主三从_Mr.chenyb_02

  • 检查集群信息
  • redis-cli -a <密码> --cluster check ip:port

springboot redis三主三从 配置 redis为什么三主三从_redis_03

  • redis-cli -c -a < 密码> -h <IP> -p <端口>

springboot redis三主三从 配置 redis为什么三主三从_插槽_04

  • CLUSTER INFO

springboot redis三主三从 配置 redis为什么三主三从_插槽_05

  • CLUSTER NODES

springboot redis三主三从 配置 redis为什么三主三从_Mr.chenyb_06

  • 测试数据存储
  • 在192.168.213.134从节点存储数据,会自动切换到对应的主节点192.168.213.131操作
  • 192.168.213.131查看所有key,是可以看到刚刚存储的key(a),但是切换到192.168.213.129上又查不到key(a)--插槽存储
  • 192.168.213.129获取key(a)会自动切换到192.168.213.131获取数据-集群获取

springboot redis三主三从 配置 redis为什么三主三从_配置文件_07

springboot redis三主三从 配置 redis为什么三主三从_redis_08

springboot redis三主三从 配置 redis为什么三主三从_redis_09

  • 当从节点宕机,集群正常运行
  • 当主节点宕机,会把关联这个主节点的从节点其中之一通过选举,提升为主节点继续工作
  • 存储为插槽式存储,当前节点获取全部key,只能获取存储在当前节点的数据,获取指定key则可以切换节点获取
  • 当宕机的原master节点恢复后,自动归队,归属于原从节点提升后成为主节点的从节点

springboot redis三主三从 配置 redis为什么三主三从_Mr.chenyb_10

springboot redis三主三从 配置 redis为什么三主三从_配置文件_11

  • 槽节点
  • 共有16384个槽节点,会根据master总数平均分配
  • 存储方式是根据key与16384求余,计算数据存储于哪个master节点
  • 不在同一个节点的数据获取时,会自动切换节点,get keys 获取不到全部数据
  • 注意
  • 如果在核心配置文件(redis.conf)中如果没有配置masterauth 属性,则master节点宕机后关联的slave节点不能提升为新的master节点,导致集群瘫痪
  • cluster-node-timeout,健康检查超时时间,超时则认为master宕机,随后主备切换,具体时间根据当前网络与服务器配置调试,这里建议12000,时间短容易误判,时间就容易集群瘫痪