Redis高可用集群redis-cluster详解


Posted in Redis onMarch 20, 2022

哨兵模式主要解决了手动切换主从节点的问题

1 , 哨兵模式的缺陷

.主从节点切换的时候存在访问瞬断,等待时间较长,

.只有一个master节点提供写,slave节点提供读,尽管写的效率是10万/秒,在电商大促时,写的压力全部集中在master节点上。

.master节点的内存不能设置的太大,否则持久化文件过大,影响主从同步

2,redis-cluster集群模式

Redis Cluster是社区版推出的Redis分布式集群解决方案,主要解决Redis分布式方面的需求,比如,当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster能起到很好的负载均衡的目的。

Redis Cluster集群节点最小配置6个节点以上(3主3从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。

优点:

1.没有中心架构,有多个主节点,每个主节点都可以读写

2,数据按照slot分布存储在多个节点,节点之间数据共享,可以动态调整数据分布

3,可线性拓展到1000多个节点,节点可以动态新增和删除

Redis高可用集群redis-cluster详解

redis-cluster集群安装

1,在redis安装目录下/opt/redis-4.0.6/创建redis-cluster目录,在该目录下面再创建6个目录

,分别命名8001,8002,8003,8004,8005,8006。文件结构如下

Redis高可用集群redis-cluster详解

Redis高可用集群redis-cluster详解

2, 将redis安装目录/usr/local/redis-4.0.6下的redis.conf文件拷贝至8001文件夹,并修改以下配置:

daemonize yes #开启后台运行
port 8001 #工作端口
bind 172.16.0.15 #绑定机器的内网IP,一定要设置呀老铁,不要用127.0.0.1
dir /usr/local/redis-cluster/8001/ #指定工作目录,rdb,aof持久化文件将会放在该目录下,不同实例一定要配置不同的工作目录
cluster-enabled yes #启用集群模式
cluster-config-file nodes-8001.conf #生成的集群配置文件名称,集群搭建成功后会自动生成,在工作目录下
cluster-node-timeout 5000 #节点宕机发现时间,可以理解为主节点宕机后从节点升级为主节点时间
appendonly yes #开启AOF模式
pidfile /var/run/redis_8001.pid #pid file所在目录

3. 把8001文件夹下的redis.conf文件拷贝到其他5个目录,并重新修改port 、dir、cluster-config-file 三个属性,这里可以使用sed命令快速修改

[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8002/g' 8002/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8003/g' 8003/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8004/g' 8004/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8005/g' 8005/redis.conf
[root@VM_0_15_centos redis-cluster]# sed -i 's/8001/8006/g' 8006/redis.conf

4, 由于创建集群需要用到redis-trib这个命令,它依赖Ruby和RubyGems,因此我们要先安装一下

  下载链接:https://pan.baidu.com/s/1kWsf3Rh 密码:n3pc
从这个链接下载  ruby-2.3.1.tar.gz   和  redis-3.3.0.gem
  tar -zxvf ruby-2.3.1.tar.gz 
  a,  cd ruby-2.3.1
  b,  ./configure -prefix=/opt/ruby
  c,  make && make install   //过程会有点慢,大概5-10分钟
  d,  然后gem install -l redis-3.3.0.gem  //若没有gem需要安装yum install gem -y

Redis高可用集群redis-cluster详解

5 , Ruby安装完成之后,我们开始启动6个节点

[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8001/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8002/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8003/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8004/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8005/redis.conf
[root@VM_0_15_centos redis-cluster]# ./src/redis-server redis-cluster/8006/redis.conf

6, 查看redis集群启动情况

[root@yangxXNJ-master ~]# ps -ef|grep redis
root      28079   6654  0 22:23 pts/0    00:00:00 ./redis-server *:6379
root      28238      1  0 22:24 ?        00:00:04 ./src/redis-server 192.168.145.4:8001 [cluster]
root      28517      1  0 22:25 ?        00:00:04 ./src/redis-server 192.168.145.4:8002 [cluster]
root      28591      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8003 [cluster]
root      28662      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8004 [cluster]
root      28701      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8005 [cluster]
root      28718      1  0 22:26 ?        00:00:04 ./src/redis-server 192.168.145.4:8006 [cluster]

   6个节点已经正常启动

7,[root@VM_0_15_centos redis-4.0.6]# ./src/redis-trib.rb create --replicas 1 192.168.145.4:8001 192.168.145.4:8002 192.168.145.4:8003 192.168.145.4:8004 192.168.145.4:8005 192.168.145.4:8006

Redis高可用集群redis-cluster详解

Redis高可用集群redis-cluster详解

到此这篇关于Redis高可用集群redis-cluster的文章就介绍到这了,更多相关redis-cluster高可用集群内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Redis 相关文章推荐
redis连接被拒绝的解决方案
Apr 12 Redis
Redis如何一键部署脚本
Apr 12 Redis
在K8s上部署Redis集群的方法步骤
Apr 27 Redis
浅谈Redis存储数据类型及存取值方法
May 08 Redis
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
May 21 Redis
基于Redis结合SpringBoot的秒杀案例详解
Oct 05 Redis
Redis的字符串是如何实现的
Oct 24 Redis
Redis之RedisTemplate配置方式(序列和反序列化)
Mar 13 Redis
源码分析Redis中 set 和 sorted set 的使用方法
Mar 22 Redis
Redis实现一个账号只能登录一个设备
Apr 19 Redis
Redis实现分布式锁的五种方法详解
Jun 14 Redis
一文教你快速生成MySQL数据库关系图
Jun 28 Redis
使用Redis实现点赞取消点赞的详细代码
Mar 20 #Redis
Redis集群节点通信过程/原理流程分析
redis数据一致性的实现示例
高并发下Redis如何保持数据一致性(避免读后写)
Mar 18 #Redis
redis击穿 雪崩 穿透超详细解决方案梳理
Redis调用Lua脚本及使用场景快速掌握
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
You might like
社区(php&&mysql)三
2006/10/09 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
PHP中soap的用法实例
2014/10/24 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php微信开发之谷歌测距
2018/06/14 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
Angular实现响应式表单
2017/08/04 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
自我评价如何写好?
2014/01/05 职场文书
安全生产检讨书
2014/01/21 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
人事主管岗位职责
2015/02/04 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
教师节主题班会方案
2015/08/17 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
Redis入门教程详解
2021/08/30 Redis