2019独角兽企业重金招聘Python工程师标准>>>

Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障。但是数据冗余太大,内存浪费。所以,Redis 在 3.0 版本以后就推出了集群模式。

由于集群至少需要6个节点(3主3从模式),我们可以采用端口号来区分,模拟6台服务。

上传redis安装包到/usr/local/src目录

解压安装包

cd /usr/local/src
tar -zxvf redis-3.2.12.tar.gz

编译redis

make

创建集群目录

#mkdir /usr/local/redis-cluster

创建6个节点存放目录

#cd /usr/local/redis-cluster
#mkdir -p 6001/data 6002/data 6003/data 6004/data 6005/data 6006/data

创建脚本存放目录bin

#mkdir bin

复制刚才在解压编译的redis安装包的src目录下的

mkreleasehdr.sh   redis-benchmark redis-check-aof redis-check-dump

redis-cli redis-server redis-trib.rb 这6个脚本文件到bin目录

#cd /usr/local/src/redis-3.2.12/src
#\cp mkreleasehdr.sh redis-benchmark redis-check-aof  redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

复制配置文件redis.conf到第一个节点6001目录

#cp redis.conf /usr/local/redis-cluster/6001

编辑redis.conf配置文件

#cd /usr/local/redis-cluster/6001
#vi redis.conf

修改项目如下

port 6001(每个节点的端口号)

daemonize yes

bind 192.168.100.131(绑定当前机器 IP)

dir /usr/local/redis-cluster/6001/data/(数据文件存放位置)

pidfile /var/run/redis_6001.pid(pid 6001和port要对应)

cluster-enabled yes(启动集群模式)

cluster-config-file nodes6001.conf(6001和port要对应)

cluster-node-timeout 15000

appendonly yes

集群搭建配置重点就是取消下图中的这三个配置的注释

再复制出五个新 Redis 实例分别到6002,6003,6004,6005,6006

#\cp -rf /usr/local/redis-cluster/6001/* /usr/local/redis-cluster/6002
#\cp -rf /usr/local/redis-cluster/6001/* /usr/local/redis-cluster/6003
#\cp -rf /usr/local/redis-cluster/6001/* /usr/local/redis-cluster/6004
#\cp -rf /usr/local/redis-cluster/6001/* /usr/local/redis-cluster/6005
#\cp -rf /usr/local/redis-cluster/6001/* /usr/local/redis-cluster/6006

依次修改6002,6003,6004,6005,6006五个节点的redis.conf配置文件中的关于端口号的相关配置

6002节点redis.conf配置文件修改,使用vi编辑器命令修改替换端口 命令模式下输入 %s/6001/6002

port 6002dir /usr/local/redis-cluster/6002/data/pidfile /var/run/redis_6002.pidcluster-config-file nodes6002.conf

6003节点redis.conf配置文件修改,使用vi编辑器命令修改替换端口 命令模式下输入 %s/6001/6003

port 6003dir /usr/local/redis-cluster/6003/data/pidfile /var/run/redis_6003.pidcluster-config-file nodes6003.conf

6004节点redis.conf配置文件修改,使用vi编辑器命令修改替换端口 命令模式下输入 %s/6001/6004

port 6004dir /usr/local/redis-cluster/6004/data/pidfile /var/run/redis_6004.pidcluster-config-file nodes6004.conf

6005节点redis.conf配置文件修改,使用vi编辑器命令修改替换端口 命令模式下输入 %s/6001/6005

port 6005dir /usr/local/redis-cluster/6005/data/pidfile /var/run/redis_6005.pidcluster-config-file nodes6005.conf

6006节点redis.conf配置文件修改,使用vi编辑器命令修改替换端口 命令模式下输入 %s/6001/6006

port 6006dir /usr/local/redis-cluster/6006/data/pidfile /var/run/redis_6006.pidcluster-config-file nodes6006.conf

其实我们也就是替换了上面的那四行配置而已。工具能干的人就懒惰一点没有什么不好,呵呵。

到这里,我们已经把最基本的环境搞定了,接下来就是启动了。

/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/6001/redis.conf
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/6002/redis.conf
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/6003/redis.conf
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/6004/redis.conf
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/6005/redis.conf
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/6006/redis.conf

查看启动进程

安装集群所需软件

yum -y install ruby
yum -y install rubygems

下载这个文件

链接:https://pan.baidu.com/s/1SBYTJ22FUTVOtsbiSmZNIg  密码:u3ji

进行安装,使用 gem install redis安装基本是无望了,卡死,更改了很多源无效,所以只好下载手动安装了

把下载好的文件上传到/usr/local/src目录

进入上传好的插件目录进行安装

#cd /usr/local/src
#gem install -l redis-3.2.1.gem

调用 ruby 命令来进行创建集群,--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16384 个 solt(0--16383) ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.100.131:6001 192.168.100.131:6002 192.168.100.131:6003 192.168.100.131:6004 192.168.100.131:6005 192.168.100.131:6006

输入yes

M: e6a21c9f8bd16c9a082c9d93824faf00541f37ec 为主节点Id

S: 8fd465aa4d066d3771209d1a34ce4acfaba82da7 192.168.100.131:6004  replicates e6a21c9f8bd16c9a082c9d93824faf00541f37ec

从节点id 也就是说6004节点是6001的从节点

上图则代表集群搭建成功啦!!!

接下来我们链接6001节点

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.100.131 -p 6001

我们在6001节点set name  123456 发现自动重定向到6002节点了

这是由于redis集群内部会按照crc16算法把集群按16384个卡槽均分存储,而name通过crc16算法计算给分配到6002节点上了,那么就会自动重定向到6002节点存储。所以我们看到我们明明在6001节点set的数据为啥客户端会定向到6002节点的原因。

现在我们再回到6001节点客户端查询刚才存储的name的值

会定向到6002节点,redis分片集群就是通过crc16算法计算卡槽来重定向从哪里读取数据和存储数据,内部自动实现了重定向。

以上就是redis-cluster集群的搭建和测试步骤。

总结:

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的

所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。

Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。

那么redis是怎么做到的呢?首先,在redis的每一个节点上,都有这么两个东西,一个是插槽(slot)可以理解为是一个可以存储两个数值的一个变量这个变量的取值范围是:0-16383。还有一个就是cluster我个人把这个cluster理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

转载于:https://my.oschina.net/shxjinchao/blog/1923715

redis3.0伪集群安装步骤相关推荐

  1. Hadoop,Hbase伪集群安装步骤

    Hbase和Hadoop和jdk版本一定要对应,不然很容易出错 Hbase和jdk版本对应关系 Java Version HBase 1.3+ HBase 2.1+ HBase 2.3+ JDK7 支 ...

  2. redis伪集群安装linux,redis伪集群搭建(亲测无坑)

    一.单机版安装部署,伪集群只需要操作前1-8步即可,再往下浏览找到:二.单机版-伪集群  安装部署继续搭建,如需设置密码参照第10步 1.安装基本工具 yum install -y gcc-c++ v ...

  3. 03_zookeeper伪集群安装

    一句话说明白:在1台机器上模拟多台机器,对外提供服务 在理解zookeeper集群安装方法的基础上,本文描述如何将1个机器模拟为3个节点的zookeeper集群,建议先参考阅读本文的前一期 zooke ...

  4. redis-3.0.2集群部署

    Redis 集群安装 集群搭建步骤 1.创建多个节点. 2.为每个节点指派槽,并将多个节点连接起来,组成一个集群. 3.当集群数据库的16384个槽都有节点在处理时,集群进入上线状态. 要求:搭建一个 ...

  5. ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)

    为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群,可是我只有两天服务器怎么办呢?我试过两台服务器组件集群,但是无法启动,所以这里部署一个[一 ...

  6. redis-4.0.10集群安装(3台机器,6个node),以及在Spring项目中的集成,redis操作工具类

    1 Redis安装 redis高可用的三种常见的集群方式:redis sentinel .redis cluster(多主机+分布式).redis sharding.接下来主要介绍redis sent ...

  7. Hadoop之——Hadoop2.2.0分布式集群安装

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45748111 一.安装系统 虚拟软件 :  VMware workstation ...

  8. Hadoop基础之《(6)—Hadoop单机伪集群安装》

    一.安装JDK yum install java-1.8* 二.关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl ...

  9. Kafka0.10.2.0分布式集群安装

    一.依赖文件安装 1.1 JDK 参见博文:http://www.cnblogs.com/liugh/p/6623530.html 1.2 Scala 参见博文:http://www.cnblogs. ...

最新文章

  1. python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类
  2. 嵌入式Linux利用ppp实现4G模块联网
  3. Rsync数据同步服务
  4. main 函数内的变量是全局变量,还是局部变量?
  5. Java高并发编程(五):Java中的锁Lock
  6. 【BZOJ5335】【TJOI2018】—智力竞赛(floyd传递闭包+二分图匹配)
  7. SpringMvc之参数绑定注解详解
  8. SpringBoot项目打成jar包后,无法读取resources下的文件
  9. sublime3 ctl+b无效
  10. fusionsphere的核心组件_FusionSphere架构详解
  11. python第四课知识点总结
  12. weka连接mysql数据库
  13. 使 VC2013 编写的程序运行在其它电脑上
  14. JS高级程序设计——阅读笔记一
  15. CA系统(概念、结构和功能)和CA证书
  16. 刚刚,2020年中国信息通信技术服务大会盛大召开!
  17. 项目意义、必要性分析及需求分析的区别
  18. 360的困兽之斗——探讨奇虎Tecent商业模式
  19. sql网上书店项目的实现
  20. PS基础-day03套索,魔棒,裁剪,修复画笔工具组,蒙版

热门文章

  1. python list索引遍历_在python中遍历dict和list
  2. java 单文件上传_java – JIRA中的单个文件上传
  3. oracle x ksppi,求 x$ksppi 和x$ksppcv 得详细解释
  4. 目前服务器操作系统版本,目前服务器操作系统版本号
  5. python 矩阵类型转换_python中的矩阵运算
  6. 如何在一台没有网的电脑上安装anaconda_简述验证Anaconda是否安装成功的两种方式...
  7. Python案例:求满足条件的人数
  8. Python案例:四种方式编程求解一元二次方程
  9. Java实训项目3:GUI学生信息管理系统 - 涉及知识点
  10. 数据库笔记06:创建并管理数据表