redis集群

在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客)。如果Master异常则会做主从切换。选举一个slave作为新的Master,3.0之后出现了集群。集群的搭建至少需要3个Master
在这里我只在一台装有linux系统装3个Master和3个slave作为测试。
linux主机的ip为192.168.1.229

第一步

1.下载redis安装包解压并安装到linux系统中。

第二步

2.创建redis集群文件夹,用于存放6个redis集群的文件
mkdir /usr/local/redis-cluster
mkdir 7001 ,mkdir 7002,mkdir 7003,mkdir 7004,mkdir 7005,mkdir 7006
创建好上面的6个文件夹。

第三步

3将redis的redis-conf这个文件夹使用cp命令copy到每一个redis文件夹中
然后分别修改每一个700*文件夹中redis-conf文件。
(1)daemonize yes 说明:开启redis的后台启动
(2)port 7001到7006 说明:更改6个文件夹中的redis.conf文件的每一个端口号。
(3)bind 192.168.1.229 700*(*代表对应的1到6)说明:绑定每一个redis的机器的ip和端口号(根据自己的机器ip对应修改)。
(4)dir /usr/local/redis-cluster/700*/ 指定数据文件存放的位置,每个redis对应自己的文件夹就好。每个redis必须指定不同的文件夹位置,不然会丢失数据。
(5)cluster-enabled yes 说明:启动集群模式。
(6)cluster-conf-file nodes700*.conf 说明:集群配置文件,最好分别命名为自己的端口号,方便以后查看。
(7)cluster-node-timeout 5000 说明:集群的生效时间
(8)appendonly  yes  说明:开启aof模式。
把6个文件夹中每个文件夹中的文件都做相对应的修改之后。

第四步

4.由于redis集群需要使用ruby命令,所以我们需要在linux中安装ruby。
(1)yum install ruby
(2)yum install rubygems
(3)gem install redis (安装redis和ruby的接口)

第五步

5.分别启动6个redis实例,然后检查是否启动成功
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf 
都启动后用ps -ef | grep redis检查是否6个redis实例都启动成功
 
 
出现上面的提示证明所以实例都启动成功了。但是这一步成功只能说明我们redis的配置是没问题的,然是我们还没有把这6个redis实例设置成一个集群

6.创建集群

到redis3.0安装目录下找到src文件夹,然后执行redis-trib.rb命令
redis-trib.rb create --replicas 1 192.168.1.229:7001 192.168.1.229:7002 192.168.1.229:7003 192.168.1.229:7004 192.168.1.229:7005 192.168.1.229:7006
这个命令就代表把这些个redis实例创建为一个集群  上面命令中的1代表主节点和从节点的比值是多少,如果12个主节点,6个从节点那么我们的比值就是2,那么我们是3主3从,所以这个比值是1,而且前三个一定是主节点,redis就是这样规定的。
执行这个命令后,会出现个提示问你是否确定创建集群。我们直接输入yes,我们的集群环境就搭建好了。
 

7.测试集群,登录到集群的客户端

/usr/local/redis/bin/redis-cli -c -h 192.168.1.229 -p 7001   c代表集群模式 h代表地址 p代表端口号
我们进入客户端之后,查看下集群信息cluster nodes
这样就说明我们的集群已经搭建好了
我们发现上面的信息中说7001,7002,7003分别为master 而且都有对应的hash槽。
此时我们在集群的任何一个客户端中进行set,然后在其他的客户端中都可以get到。

redis集群添加一个新的主从节点7007为主7008为从

我们同样在redis-cluster文件夹下药创建7007和7008文件夹,同样要把redis.conf文件copy过去并且像上面一样修改对应参数。
然后分别启动这两个实例,然后启动7007和7008,但是此时7007和7008虽然启动了,但是是不属于我们集群里面的。
同样适用redis安装文件夹下src文件夹下的redis-trib.rb这个命令。
redis-trib.rb add-node 192.168.1.229:7007 192.168.1.229:7001前面的ip和端口号为新添加的节点,后面的为集群中任意一个节点。
 
此时我们就把7007这个新的节点加入到了集群中,但是此时7007作为一个Master还没有分配hash槽,我们还要为他分配hash槽。
redis-trib.rb reshard 192.168.1.229:7001 这个命令的意思是未7007分配hash槽 这个ip要是集群中任意一个主节点的ip和端口。
然后出现一堆提示之后会让你选择添加的槽数,
填写你想添加的槽数然后回车。
然后会让你输入想要被分配槽的节点的id
选择分配槽的方式是all还是done,我们选择all
分配成功
redis-trib.rb add-node 192.168.1.229:7008 192.168.1.229:7001同样把7008添加到集群中。
7008为7007的从节点
我们需要登录到redis集群客户端
/usr/local/redis/bin/redis-cli -c -h 192.168.1.229 -p 7001
cluster replicate 7007的id  意思就是把7008添加为7007的从节点。

从集群中删除主节点和从节点

最后我们尝试删除刚刚添加的主节点7007和从节点7008
删除主节点会相对麻烦一些,因为我们需要把删除主节点的hash槽分配到其他节点中去!然后再进行移除节点操作
redis-trib.rb reshard 192.168.1.229:7007 我们直接使用这个命令即可
提示填写你移动的槽的个数。
提示输入要移动到的节点的id,输入一个7003的id
选择分配槽的方式是all还是done,我们选择done
最后删除redis-trib.rb del-node 192.168.1.229:7007 7007的id
redis-trib.rb del-node 192.168.1.229:7008 7008的id
删除7007和7008节点成功

redis学习五,redis集群搭建及添加主从节点的更多相关文章

  1. redis 学习笔记-cluster集群搭建

    一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...

  2. 转:Redis 3.2.1集群搭建

    Redis 3.2.1集群搭建   一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...

  3. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  4. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...

  5. Redis单机安装以及集群搭建

    今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建). 环境:CentOS 7.1,redis-5.0.7 一.单机安装 1.将Redis安装包放置服务器并解压 2.进入redis安装目录 ...

  6. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  7. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  8. Redis 3.2.1集群搭建

    一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):slave->master ...

  9. 分布式缓存技术redis系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

随机推荐

  1. 【Poj2960】S-Nim & 博弈论

    Position: http://poj.org/problem?id=2960 List Poj2960 S-Nim List Description Knowledge Solution Noti ...

  2. influxdb入门——和mongodb一样可以动态增加字段

    ./influxd [--config yourconfigfile 2> /dev/null]  之所以重定向 因为默认log是stderr 再启动客户端./influx > CREAT ...

  3. [置顶] Snow的追寻

    题目描述 Snow终于得知母亲是谁,他现在要出发寻找母亲. 王国中的路由于某种特殊原因,成为了一棵有n个节点的根节点为1的树,但由于"Birds are everywhere.", ...

  4. [Swift通天遁地]八、媒体与动画-(11)实现音乐播放的动态视觉效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. Android数据存储的5种方法

    --使用SharedPreferences存储数据 --文件存储数据 --SQLite数据库存储数据 --使用ContentProvider存储数据 --网络存储数据 Preference,File, ...

  6. 取消安卓listview,scrollview,gridview滑动时候边缘模糊问题

    只需在xml文件里面声明: android:faddingEdge = "none" android:faddingEdgelenth = "0dp" andr ...

  7. EF--ModelFirst

    EF框架有三种基本的方式:DB First,Model First,Code First.这里简单的说一下Model First,适合没有基础的同学照着做,学习基础的东西. 1.建立一个类库项目,这个 ...

  8. Android内存管理(6)onTrimMemory,onLowMemory,MemoryInfo()

    转自: http://www.cnblogs.com/sudawei/p/3527145.html 参考: Android Application生命周期学习 Android中如何查看内存(上) An ...

  9. 涨知识-VI 基于TCP/UDP的应用层协议

    基于TCP/UDP的应用层协议: 基于TCP: Telnet(Teletype over the Network, 网络电传),通过一个终端(terminal)登陆到网络 FTP(File Trans ...

  10. Windows键盘驱动结构与消息机制--转

    https://www.douban.com/note/318793892/ 本文主要介绍按键消息是如何传递到窗口并转化为具体的按键消息的. Windows系统是事件驱动的多任务系统,其中按键和鼠标是 ...