redis-cluster搭建&初步体验

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 环境:     RedHat6---Linux 2.6.32-279.el6.x86_64    redis-3.0.3 目的:     看看除了codis以外的集群方案怎么样,官方版本应该会一直维护,redis-cluster的介绍参考官方文档http://redis.
环境:
     RedHat6---Linux 2.6.32-279.el6.x86_64
    redis-3.0.3

目的:
    看看除了codis以外的集群方案怎么样,官方版本应该会一直维护,redis-cluster的介绍参考官方文档http://redis.io/topics/cluster-spec

前期准备:
    创建cluster需要rubygems,这里一起放上RH6需要的rpm包名,如果能直接yum安装自然是最方便
    openssl-1.0.1e-30.el6.x86_64
    ruby-1.8.7.374-4.el6_6.x86_64
    ruby-libs-1.8.7.374-4.el6_6.x86_64
    ruby-rdoc-1.8.7.374-4.el6_6.x86_64
    ruby-irb-1.8.7.374-4.el6_6.x86_64
    rubygems-1.3.7-5.el6.noarch
     rpm包安装好以后,一定要记得执行命令: gem install redis

搭建过程:

1.安装redis-3.0.3
    redis的官网下载即可,使用tar zxvf命令解压,然后make && make install就ok了

2.修改redis.conf文件
    需要修改的内容如下   

    port 7000

    cluster-enabled yes

    cluster-config-file nodes.conf

    cluster-node-timeout 5000

    appendonly yes

    (个人建议顺便改了)pidfile /var/run/redis-7000.pid

3.创建至少六个redis实例
   方法一:把redis.conf拷贝成redis7000.conf ~ redis7005.conf,修改端口号(和pid文件路径)
   方法二:拷贝redis目录为redis-3.0.3-7000 ~ redis-3.0.3-7005,修改端口号 (和pid文件路径 )(测试用的这种方式)

4.分别启动六个redis实例
   特别需要注意,在redis-3.0.3这个版本,如果只是启动redis-server而不带上配置文件,则会按照内置配置启动,不会去读目录下的redis.conf的内容
   nohup ./src/redis-server ./redis.conf &

5.使用ruby脚本创建cluster
   命令:./src/redis-trib.rb create --replicas 1 127.0.0.1:7000 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
   PS:./src/redis-trib.rb help 可以看到命令的介绍;create就是创建cluster,--replicas 1代表每个cluster的Master至少包含一个slave,后面跟上加入到cluster的redis实例
   如果没有问题,会有如下输出,中间输入一下yes


使用redis-cli登录到任意一个redis实例都可以看到cluster的信息,最前面是NodeID,然后是IP:PORT,M/S,0-5460是slot的范围,其他的暂时没有太仔细研究,

尝试一下shutdown端口为7005的slave实例,看看nodes的信息,7005已经被标记为fail


那么再试试启动这个实例


重新启动的实例再次进入了cluster,那么试试shutdown端口为7001的Master实例,发现新的7004被选举为Master,重启以后,7001以slave的身份加入cluster


那么问题来了,cluster启动是没问题,但是那个ruby脚本并没有提供关闭集群的方法,仔细观察help的话,可以发现脚本提供了add和del的方式来调整集群,在正常情况下应该是能满足使用了

如果要关闭cluster,最简单粗暴的办法就是关闭所有实例,不过这些实例启动之后,cluster的信息还在,启动以后又会自动加入cluster

假设有新需求需要重新配置cluster,但是又不想用add和del的方式,怎么办?

在redis-cli内使用cluster reset命令,就能清除某个redis实例保存的cluster信息了~之后就可以随意修改了~

---------------------------------------------------------------------------------------------华丽的分割线-------------------------------------------------------------------------------------------------------------

个人翻译和理解
简单的写一点redis-cluster官方文档里面的一些重点:
1.redis-cluster会丢失数据,指的是当某一个Master进行操作的时候,Master会主动扩散这个write操作,然而当Master本身完成了write,但是在扩散write操作之前就挂了,且Node-TimeOut的时间之内没有恢复,那么这个write操作就丢了。
2.redis-cluster的failover会在1-2秒内完成Master选举和标记fail实例,但是这是在经过Node-TimeOut的时间,判断为fail之后,即redis-cluster的failover消耗的时间实际上为Node-TimeOut+(1-2秒
3.其他的没什么明显的印象,再研究研究
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
存储 运维 负载均衡
Redis Cluster集群原理+三主三从交叉复制实战+故障切换
Redis Cluster集群原理+三主三从交叉复制实战+故障切换
2015 0
Redis Cluster集群原理+三主三从交叉复制实战+故障切换
|
4月前
|
存储 NoSQL 算法
深入理解Redis分片Cluster原理
本文深入探讨了Redis Cluster的分片原理,作为Redis官方提供的高可用性和高性能解决方案,Redis Cluster通过数据分片和横向扩展能力,有效降低单个主节点的压力。
深入理解Redis分片Cluster原理
|
7月前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
72 0
|
7月前
|
存储 NoSQL 网络协议
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
70 0
|
7月前
|
运维 NoSQL 算法
Redis cluster集群原理与配置
Redis cluster集群原理与配置
173 0
|
网络协议 NoSQL Redis
【Redis源码】集群之分布式cluster原理(十四)
集群之分布式cluster原理(十四)
102 0
|
存储 NoSQL 网络协议
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 集群相关配置,使用集群方式的你必须重视和知晓。别嘴上原理说的头头是道,而集群有哪些配置?如何配置让集群快到飞起,实现真正的高可用却一头雾水,通过下面这些配置详解也让你对集群原理更加深刻,告别技术悬浮。
130 1
|
存储 监控 NoSQL
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(三)
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(三)
180 0
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(三)
|
存储 监控 NoSQL
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(二)
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(二)
109 0
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(二)
|
存储 缓存 负载均衡
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(一)
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(一)
126 0
Redis主从复制、哨兵、cluster集群原理+实验(好好等,会晚些,但会更好)(一)