认真一步一步搭建下来,就可以成功....

Redis-cluster集群架构讲解

redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之前我们是搭建不了集群的。

如下图,使我们redis集群搭建图,那么这里redis集群中没有一个准确的入口,也就是说没有一个指认的可连接的redis服务,因为任何一个节点都可以作为入口连接进去。那么每个redis服务之间都可以进行通讯的,来检查对方的状态。 

redis没有准确的指认入口,任意一个redis服务都可以作为入口进行连接,那么我们考虑一个问题:我们需要知道每一个redis服务的工作状态,比如如果某一个redis服务突然停止,我们如何知道呢?

投票容错

 
如上图,每一个redis服务之间是否可以通讯及采用ping,pong的机制进行互相打招呼。当ping一个服务时,该服务相应pong,则代码服务通讯,反之不可以通讯。 
投票容错:只要有一半的redis服务认为当前某一个redis服务有问题,则判定该服务有问题存在。 
如:黄色redis服务ping下红色redis服务,发现红色redis服务没有给它响应,则黄色redis就告诉其他redis服务,你们也连接下红色redis服务,如果其它redis服务超过一半连接不上红色redis服务,则红色redis有问题存在。

redis集群故障分解

同学们注意,上面讲述如果其中有一台redis服务有问题,我们认为这台redis服务有问题存在。那么对于整个redis集群角度来看,有两种情况存在: 
1.如果集群中redis服务存在故障,切已做了主从复制,那么访问的时候会访问redis从服务,集群正常运行。 
2.redis集群中没有做主从备份,如果其中有一台redis服务故障挂掉,那么很遗憾,整个集群则都不能使用。

为什么有redis服务挂掉,整个服务就不能使用呢? 
 
通过上图我们了解到,redis-cluster中在一个名此叫槽,这个槽起到什么做作用呢? 
槽:在集群中的作用是为每一个redis节点合理的分配资源,达到负载均衡的作用。redis集群中物理节点是从0~16383,则一共16384个槽,除以几点的个数就是每个节点所承载槽的个数。 
根据什么来把数据放在哪个槽里呢?如下则是原理 

上述我们了解槽的概念,更进一步的看下槽在每个节点的分布图 

问题:最多分布几个redis服务呢?最多也就是16384个,每一个槽对应一个服务。

搭建集群

3个节点是因为redis要保证一半以上才能决策哪一台redis有问题,容错。 
那么为了保证每一台节点的稳定性,我们还要给每一个节点备份一台节点。所以这里要有6个节点。

我们运行6台服务器,基本上老师电脑挂掉,每一个更好的主机。所以老师在这里演示使用redis的实例,每一个实例其实就是一台redis服务。这种搭建比分布在6台虚拟机上更难,因为还要考虑每个redis服务端口号的问题。

我们在这里6端口号方便好记所以设置的区间是 7001-7006

搭建redis服务

如果现有的虚拟机上正在运行着redis服务,需要停止到。
停止redis服务命令

 
1.redis的实例 
redis实例在老师电脑上/usr/local/bin下,这里是redis服务的实例。 

2.在local目录下创建一个文件

3.把local/bin 拷贝纸 redis-cluster目录下,再命名redis01 
cp -r bin redis-cluster/redis01

4.切换至redis-cluster/redis01目录下 
一个干净的redis服务时没有dump.rdb文件的,这个是redis数据的快照 
rm -r dump.rdb

5.编辑redis01下的redis.conf文件 
修改端口号

6.redis如果要搭建集群,需要开启一个集群设置。 

修改bind的ip地址 
 
每个redis节点都要修改当前主机ip

7.拷贝此实例 
 
拷贝redis01---redis06,拷贝5次

8.拷贝如下所示 

9.修改端口号 
集群设置我们复制的时候都更改了,但是端口号我们需要修改独自的。 
所以去每一个redisX里的redis.conf下修改即可

10.启动redis 
这里我们可以写一个文件,里面写着每一个redis服务启动的命令 
 
如上创建一个文件,那么该文件是保存在了/local/redis-cluster/这个目录下 

保存退出编辑 

11.文件权限 
此时该文件startRedis.sh文件还不能执行,因为权限不够。 

添加可执行权限   chmod +x startRedis.sh

查看如下 

12.进入到/usr/local/redis-cluster下启动脚本文件

./startRedis.sh


如上启动成功。

并且以cluster(集群模式)模式进行启动 

确认是否有端口号7001--7006服务开启,如下命令

ps aux|grep redis

安装ruby

 
redis-cluster安装前需要安装ruby环境,搭建集群需要使用到官方提供的ruby脚本。

安装ruby的环境需要依赖于环境,首先安装ruby环境

  1. yum -y install ruby
  2. yum -y install rubygems

需要安装ruby脚本环境 
老师提供了ruby脚本包,在资料中-->redis--->redis-3.0.0.gem包

1.安装redis-3.0.0.gem

  1. gem install redis-3.0.0.gem

2.进入到/usr/local/redis-4.0.5/src解压文件下 
可以找一个redis-trib.rb,这个是脚本文件。后缀.rb就是ruby的缩写

3.拷贝一份至/usr/local/redis-cluster下 

4.查看 

5.运行脚本 
ruby包装好了,环境也装好了,那么这个脚本就可以运行了。使用ruby来搭建redis集群 
启动命令如下

  1. ./redis-trib.rb create --replicas 1 123.14.0.223:7001 123.14.0.223:7002 123.14.0.223:7003 123.14.0.223:7004 123.14.0.223:7005 123.14.0.223:7006

replicas: 1 表示每个redis服务只有1台备份机。

连接集群

redis给我提供了客户端,那么我们如何连接redis服务呢?redis服务集群特点是每一个节点都可以作为入口,备份节点也可以作为主机。

  1. redis01/redis-cli -h "123.14.0.223" -p 7001 -c

操作数据存入对应的槽 

集群的几个简单命令 
cluster info 查看集群状态 

cluster nodes 查看该集群节点数 

客户端连接集群(单机版和集群版)

单机版

集群版

 
 
 

转载于:https://www.cnblogs.com/hanguoqing/p/10244715.html

Redis集群搭建-韩国庆相关推荐

  1. redis 集群搭建_Redis分布式缓存分布式集群搭建

    当你试图解决一个你不理解的问题时,复杂化就产成了.-Andy Boothe Redis集群安装部署 Redis是一个运行在内存的非关系型数据库,因为其速度快(效率高),支持数据的持久化(安全),事务操 ...

  2. redis 集群搭建_一文轻松搞懂redis集群原理及搭建与使用

    转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...

  3. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

  4. redis集群搭建踩坑笔记

    推荐参考教程:https://blog.csdn.net/pucao_cug/article/details/69250101 错误: from /usr/lib/ruby/2.3.0/rubygem ...

  5. 系统学习redis之二——redis集群搭建

    redis单点部署: 安装命令: # cd /usr/local/ # wget http://download.redis.io/releases/redis-4.0.1.tar.gz #下载安装包 ...

  6. 转:Redis 集群搭建详细指南

    转自: https://www.cnblogs.com/mafly/p/redis_cluster.html [README] 非常棒的一篇文章,感谢作者的分享: 先有鸡还是先有蛋? 最近有朋友问了一 ...

  7. redis集群搭建与配置

    redis集群搭建与配置

  8. docker 完成 redis集群搭建

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  9. (六)Redis集群搭建

    1. 原理 redis cluster在设计的时候,就考虑到了去中心化,去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态.每个节点都和其他所有节 ...

最新文章

  1. 苏炳添招研究生了!上课画面曝光,网友:千万不要逃课……
  2. win10虚拟内存怎么设置最好_win10系统两台电脑直连怎么设置
  3. 技术人, 请不要封闭自己
  4. 百合网婚礼产品总监徐德生:电商类产品的转化率为何总是令人心碎?
  5. python教程:super()的用法
  6. json数据解析_shell从入门到放弃解析json数据(2)
  7. 【编译原理笔记17】代码优化:数据流分析,到达定值分析,到达定值方程的计算
  8. extern 关键字的作用
  9. Maxcompute ODPS SQL 日期函数
  10. c# winform 浏览器调用chrome内核
  11. c++系列:关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、Msvcp100D.dll 故障查及解决方法
  12. ROS源代码之Publish底层实现(一)
  13. Windows Live Writer 代码插件改造
  14. pytest之Monkeypatching(猴子补丁)
  15. android之ListView布局
  16. 互联网人租房有多难?听完这6位的自白,瞬间破防了 ....
  17. stm32的rxne和idle中断_stm32 USART_IT_IDLE中断 一帧数据
  18. vue + moment.js 自己写日历
  19. 突然觉得。。。好累!!!
  20. 作为精益敏捷根基的科学管理与福特、大野耐一、戴明、德鲁克

热门文章

  1. redis-cli报错:(error) MOVED 12706 (未以集群模式连接)
  2. linux安装minikube(Ubuntu/deepin)
  3. Linux Namespace系列(01):Namespace概述
  4. Rust:集所有语言之大成者
  5. arthas命令整理:基础命令、jvm相关、class相关命令
  6. Scala数组遍历:使用for和foreach
  7. python3遍历技巧
  8. Linux fork()函数底层CopyOnWrite写时复制实现原理剖析
  9. Spring Cloud构建微服务架构:消息驱动的微服务(入门)【Dalston版】
  10. linux sd卡 自动挂载 mdev,mdev实现U盘和SD卡的自动挂载