Redis 高可用之集群

本文详细介绍了Redis集群的架构、如何通过命令行进行集群搭建、主从复制调整、以及集群扩容和缩容的操作步骤,强调了Redis集群的故障转移机制和非强一致性特点。
摘要由CSDN通过智能技术生成
1、简介

        在之前的文章里,通过主从复制和哨兵机制实现Redis 高可用架构,但是由于架构比较复杂,难以维护,引入集群架构模式,一个集群可以有多个 master ,一个master 可以有多个slave,集群支持故障转移机制,内置高可用支持,无需使用哨兵功能。

        Redis 集群中内置了 16384 个哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。当需要在 Redis 集群中放置一个 key-value时,redis先对key使用crc16算法算出一个结果然后用结果对16384求余数[ CRC16(key) % 16384],这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,也就是映射到某个节点上。

2、集群搭建
2.1、集群搭建
# 1、构建集群命令
redis-cli -a 密码 --cluster create --cluster-replicas 1 192.168.30.88:6381 192.168.30.88:6382 192.168.30.89:6383 192.168.30.8:6384 192.168.30.90:6385 192.168.30.90:6386

--cluster-replicas 1  # 表示为每个master创建一个slave节点(6个节点三主三从)
# 2、查看主从复制关系
info replication
# 3、集群信息
cluster info
# 4、查看集群节点
cluster nodes
# 5、优化路由(当保存key的时候,slot不在当前节点会报错,添加-c参数)
redis-cli -a 密码 -p 端口 -c
# 6、查看key对应slot
cluster keyslot k1
# 7、节点从属调整/手动故障转移
cluster failover
2.2、集群扩容操作
# 1、增加节点到集群
redis-cli -a 密码 --cluster add-node 新节点ip:端口 集群里master的ip:端口
# 新节点ip:端口 (作为master 新增节点,此时未分配槽位)
# 集群里master的ip:端口 (原来集群领路人,引导新节点添加到集群)
# 2、检查集群
redis-cli -a 密码 --cluster check 集群里master的ip:端口
# 3、重新分配槽位
redis-cli -a 密码 --cluster reshard 集群里master的ip:端口
# 4、为新增master节点添加slave
redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

注:扩容分配槽位,是从原有槽位划分出来的,不是再重新分配。

2.3、集群缩容操作
# 1、检查集群,获取slave节点的id
redis-cli -a 密码 --cluster check 从机ip:端口
# 2、删除从节点
redis-cli -a 密码 --cluster del-node 从机ip:端口 从机节点ID
# 3、将删除的节点槽位给指定节点
redis-cli -a 111111 --cluster reshard 指定节点ip:端口
# 4、将主节点删除
redis-cli -a 密码 --cluster del-node ip:端口 主节点ID
3、Redis 集群各种情况解释

1)、当 master 节点宕机时,其 slave 节点会变成 master 节点,当 master 节点重启后,以 slave 身份回归;

2)、Redis 集群不是强一致性,在特定条件下可能会丢失一些写命令;

3)、master 节点提供读写,slave 只提供读。

4)、Redis 为什么采用16384个槽位:因为每秒钟,redis节点需要发送一定数量的ping消息作为心跳包,如果槽位为65536,这个ping消息的消息头太大了,浪费带宽在消息头中最占空间的是myslots[CLUSTER_SLOTS/8]。 当槽位为65536时,这块的大小是: 65536÷8÷1024=8kb ;当槽位为16384时,这块的大小是: 16384÷8÷1024=2kb 。

4、总结

        本文详细介绍 Redis 集群含义,以及如何进行集群搭建、集群扩容、集群缩容进行详细操作说明,帮助大家快速完成集群搭建和 Redis 集群运维。

        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知其_所以然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值