Redis集群

Redis版本要求:Redis 版本3.0+

Redis Cluster TCP ports

Redis集群的每一个节点需要两个端口号,client port和cluster bus port,比如6379,16379
端口6379:用于redis client连接
端口16379:用于集群节点间的交流通信

cluster bus port = client port + 10000,这是固定的

Redis集群数据分片

Redis 集群有16384个哈希槽,每一个key通过CRC16算法对16384取模,得到相应的槽位
假设集群有如下节点:

  • 节点A, 槽位0 ~ 5500
  • 节点B, 槽位5501 ~ 11000
  • 节点C, 槽位11001 ~ 16383

如果要增加一个节点D,则需要从其他节点A,B,C拿一些槽位给D;反之,如果要删除节点,则需要将自身的槽位转移到其他节点,才能删除该节点

Redis集群参数配置

cluster-enabled <yes/no> 是否开启集群模式
cluster-config-file <filename> 记录集群配置,方便重启
cluster-node-timeout <milliseconds> 超时时间

手动创建Redis集群

Redis集群最小配置文件 redis.conf

port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

最小集群最少需要三个master,建议3master,3slave

创建步骤如下:

  • 首先执行以下命令
mkdir cluster-test
cd cluster-test
mkdir  7001 7002 7003 7004 7005 7006
  • 在每一个目录下创建相应的 redis.conf 文件

  • 复制redis-server文件到 cluster-test 下

  • 启动每一个Redis实例

cd 7000
../redis-server ./redis.conf

创建集群

  • 对于Redis5
    复制redis-cli文件到 cluster-test 下

执行以下命令

./redis-cli --cluster create 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005  127.0.0.1:7006 \
--cluster-replicas 1

--cluster-replicas 1 表示 每一个master:slave,即一个主节点有一个从节点

Redis集群创建成功标志

查询集群所有节点

./redis-cli -p 7001 cluster nodes
查询结果

故障转移测试

端口7001宕机

./redis-cli -p 7001 debug segfault
// 执行结果
Error: Server closed the connection

再重启7001端口,可以看到原先的端口7005从节点变成了主节点


故障转移效果图

扩展一个主节点master

创建7007目录
创建redis.conf文件
启动redis实例 ../redis-server ./redis.conf

将7007节点加入集群

./redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7002
查询结果

槽位分配

./redis-cli --cluster reshard 127.0.0.1:7005
槽位分配过程
槽位分配结果

增加一个从节点

// 127.0.0.1:7006  增加的从节点ip
redis-cli --cluster add-node 127.0.0.1:7006 \
127.0.0.1:7000 --cluster-slave \
 --cluster-master-id \
// 主节点nodeId
3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

删除一个节点

redis-cli --cluster del-node 127.0.0.1:7001  `<del-node-id>`

注意:
删除一个master时,其槽位必须为0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • redis集群分为服务端集群和客户端分片,redis3.0以上版本实现了集群机制,即服务端集群,3.0以下使用客户...
    hadoop_null阅读 1,692评论 0 6
  • 前面我们介绍了国人自己开发的Redis集群方案——Codis,Codis友好的管理界面以及强大的自动平衡槽位的功能...
    Jackeyzhe阅读 2,174评论 0 3
  • redis主题 01_Redis介绍和安装运行02_Jedis的介绍和使用03_Redis数据类型和数据操作的命令...
  • 单机/单点 单点故障/瓶颈:多个节点负载:面向数据:一变多(一致性<弱一致,最终一致性>)》可用性最终一致性:一部...
    壹点零阅读 874评论 0 3
  • 枇杷黄时夏初长 绿暗红老 晚风犹微凉 经书漫卷思漫飏 一忽儿生 一忽儿亡 峥嵘都平常 怨一场 恨一场 争一场 斗一...
    黛眉居阅读 479评论 13 19

友情链接更多精彩内容