redis集群实战
2015-10-29 08:40
537 查看
一、说明
redis 3.0集群功能出来已经有一段时间了,目前最新稳定版是3.0.5,我了解到已经有很多互联网公司在生产环境使用,比如唯品会、美团等等,刚好公司有个新项目,预估的量单机redis无法满足,开发又不想在代码层面做拆分,所以就推荐他们尝试一下redis集群,下面做了一些相关笔记,以备后用
二、环境
1、redis节点
2、redis版本
三、安装配置
1、安装redis
2、安装ruby及ruby的redis模块
3、内核调优
4、建立目录
5、撰写redis配置文件(cp配置文件注意修改端口)
6、启动服务
7、初始化集群
8、查看集群状态
PS:
redis-trib.rb是一个ruby工具,封装了redis集群的一些命令,用这个工具操作集群非常方便,比如上面初始化集群,查看集群状态,还有添加、删除节点,迁移slot等等功能
四、redis集群维护
A、场景1
线上的集群已经有瓶颈,集群需要扩容,比如我们已经准备了一主一从(10.10.2.85:6302、10.10.2.85:6303),如下:
1、添加一个主节点
10.10.2.85:6302是要加的新节点,10.10.2.70:6300是集群中已存在的任意节点
2、给主节点添加从节点
--slave 指定要加的是从节点,--master-id 指定这个从节点的主节点ID,10.10.2.85:6303是需要新加的从节点,10.10.2.70:6300是集群已存在的任意节点
3、迁移一些slot给新节点
B、场景二
上面的例子是集群扩容,相对的,由于各种原因集群可能也需要缩容,下面的例子把上文扩容的节点下线,步骤如下:
1、迁移这个节点的slot到其他节点(有slot的节点是不可以直接下线的)
2、然后查看10.10.2.85:6302这个maser上已经没有slot了
3、下线slave节点
4、下线master节点
C、场景三
集群中一个节点的master挂掉,从节点提升为主节点,还没有来的急给这个新的主节点加从节点,这个新的主节点就又挂掉了,那么集群中这个节点就彻底不可以用了,为了解决这个问题,我们至少保证每个节点的maser下面有两个以上的从节点,这样一来,需要的内存资源或者服务器资源就翻倍了,有没有一个折中的方法呢,答案是肯定的,还节点上文配置文件中的cluster-migration-barrier参数不,我们只需要给集群中其中一个节点的master挂多个从库,当其他节点的master下没有可用的从库时,有多个从库的master会割让一个slave给他,保证整个集群的可用性
1、给10.10.2.70:6300 10.10.2.70:6301 这组节点下面加一个从库10.10.2.85:6302
2、把10.10.2.71:6300 10.10.2.71:6301这组的从节点停掉
3、查看10.10.2.85:6302这个节点是否成为10.10.2.71:6300的从库
五、cluster相关命令
参考文章:
http://www.redis.cn/topics/cluster-tutorial.html
http://www.redis.cn/topics/cluster-spec.html
http://redisdoc.com/topic/cluster-tutorial.html
http://navyaijm.blog.51cto.com/4647068/1706715
redis 3.0集群功能出来已经有一段时间了,目前最新稳定版是3.0.5,我了解到已经有很多互联网公司在生产环境使用,比如唯品会、美团等等,刚好公司有个新项目,预估的量单机redis无法满足,开发又不想在代码层面做拆分,所以就推荐他们尝试一下redis集群,下面做了一些相关笔记,以备后用
二、环境
1、redis节点
1、安装redis
redis-trib.rb是一个ruby工具,封装了redis集群的一些命令,用这个工具操作集群非常方便,比如上面初始化集群,查看集群状态,还有添加、删除节点,迁移slot等等功能
四、redis集群维护
A、场景1
线上的集群已经有瓶颈,集群需要扩容,比如我们已经准备了一主一从(10.10.2.85:6302、10.10.2.85:6303),如下:
1、添加一个主节点
2、给主节点添加从节点
3、迁移一些slot给新节点
上面的例子是集群扩容,相对的,由于各种原因集群可能也需要缩容,下面的例子把上文扩容的节点下线,步骤如下:
1、迁移这个节点的slot到其他节点(有slot的节点是不可以直接下线的)
集群中一个节点的master挂掉,从节点提升为主节点,还没有来的急给这个新的主节点加从节点,这个新的主节点就又挂掉了,那么集群中这个节点就彻底不可以用了,为了解决这个问题,我们至少保证每个节点的maser下面有两个以上的从节点,这样一来,需要的内存资源或者服务器资源就翻倍了,有没有一个折中的方法呢,答案是肯定的,还节点上文配置文件中的cluster-migration-barrier参数不,我们只需要给集群中其中一个节点的master挂多个从库,当其他节点的master下没有可用的从库时,有多个从库的master会割让一个slave给他,保证整个集群的可用性
1、给10.10.2.70:6300 10.10.2.70:6301 这组节点下面加一个从库10.10.2.85:6302
http://www.redis.cn/topics/cluster-tutorial.html
http://www.redis.cn/topics/cluster-spec.html
http://redisdoc.com/topic/cluster-tutorial.html
http://navyaijm.blog.51cto.com/4647068/1706715
相关文章推荐
- Redis源码分析系列
- Redis源码分析系列
- redis双主设计
- Redis简介及3.0.2编译安装
- Redis 【string】 一句话说明
- Redis源码分析系列
- Redis之持久化和主从同步
- Redis之最大内存置换策略
- Redis之ZSet命令
- Redis之Set命令
- Redis源码之String操作
- redis安装笔记
- Linux下php安装Redis扩展
- Linux CentOS 6.5nginx +tomcat +redis分布式web应用的session共享配置
- Hadoop、Spark、HBase与Redis的适用性见解
- Yii2使用Redis - 从安装redis到使用
- redis3.0.0 集群安装详细步骤
- Redis 搭建及编译
- java对redis的基本操作
- centos 6.5 安装php redis 扩展