Redis的集群搭建
一.集群的搭建
1.准备工作
(1)安装ruby环境
redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:
yum -y install ruby
yum -y install rubygems
(2)安装ruby和redis的接口程序
拷贝redis-3.0.0.gem至/usr/local下;
执行安装:
gem install /usr/local/redis-3.0.0.gem
2.集群规划
(1)Redis集群最少需要6个节点,可以分布在一台或者多台主机上。在教案在一台主机上创建伪分布式集群,不同的端口表示不同的redis节点,如下:
主节点:192.168.56.3:7001 192.168.56.3:7002 192.168.56.3:7003
从节点:192.168.56.3:7004 192.168.56.3:7005 192.168.56.3:7006
(2)在/usr/local/redis下创建redis-cluster目录,其下创建7001、7002。。7006目录,如下:
(3)将redis解压路径下的配置文件redis.conf,依次拷贝到每个700X目录内,并修改每个700X目录下的redis.conf配置文件:
port 700X
bind 192.168.56.3
cluster-enabled yes
建议配置:开启后台模式 daemonized yes
指定日志输出的文件 logfile /usr/local/redis/redis-cluster/7001/node1.log
3.启动每个结点redis服务
依次以700X下的redis.conf,启动redis节点。(必须指定redis.conf文件)
./redis-server /../700X/redis.conf
4.执行创建集群命令
进入到redis源码存放目录/home/redis/redis-4.10.3/src下,执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
./redis-trib.rb create --replicas 1 192.168.4.253:7001 192.168.4.253:7002 192.168.4.253:7003 192.168.4.253:7004 192.168.4.253:7005 192.168.4.253:7006 |
5.查询集群信息
集群创建成功登陆任意redis结点查询集群中的节点情况。
./redis-cli -c -h 192.168.56.3 -p 7001
说明:
./redis-cli -c -h 192.168.56.3 -p 7001 ,其中:
-c表示以集群方式连接redis,
-h指定ip地址,
-p指定端口号
cluster nodes 查询集群结点信息;
cluster info 查询集群状态信。
二.添加主节点
1.节点规划
集群创建成功后可以向集群中添加节点,下面是添加一个master主节点
添加7007节点,参考集群结点规划章节添加一个“7007”目录作为新节点。
添加节点,执行下边命令:
./redis-trib.rb add-node 192.168.23.20:7007 192.168.23.20:7001
查看集群结点发现7007已添加到集群中:
2.hash槽重新分配
添加完新的主节点后,需要对主节点进行hash槽分配,这样该主节才可以存储数据。
redis集群有16384个槽,被所有的主节点共同分配,通过查看集群结点可以看到槽占用情况。
给刚添加的7007结点分配槽:
第一步:连接上集群
./redis-trib.rb reshard 192.168.23.20:7001(连接集群中任意一个可用节点都行)
第二步:输入要分配的槽数量
输入 500表示要分配500个槽
第三步:输入接收槽的结点id
这里准备给7007分配槽,通过cluster nodes查看7007结点id为79bbb30bba66b4997b9360dd09849c67d2d02bb9
输入:79bbb30bba66b4997b9360dd09849c67d2d02bb9
第四步:输入源结点id
这里输入all
第五步:输入yes开始移动槽到目标结点id
3.添加从节点
集群创建成功后可以向集群中添加节点,下面是添加一个slave从节点。
添加7008从结点,将7008作为7007的从结点。
新增从节点命令格式:
./redis-trib.rb add-node --slave --master-id masterID newNodIP:port MasterIP:port
masterID 主节点id,从cluster nodes信息中查看
newNodIP:port 新增节点的ip:端口
MasterIP:port 主节点的ip:端口
执行如下命令:
./redis-trib.rb add-node --slave --master-id 909c349f5f2d4db015101fb7c4e3c227a74ad382 192.168.4.253:7008 192.168.4.253:7007
79bbb30bba66b4997b9360dd09849c67d2d02bb9 是7007结点的id,可通过cluster nodes查看。
注意:
如果原来该结点在集群中的配置信息已经生成cluster-config-file指定的配置文件中(如果cluster-config-file没有指定则默认为nodes.conf),这时可能会报错:
[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解决方法:
删除生成的配置文件nodes.conf,删除后再执行./redis-trib.rb add-node指令。
查看集群中的结点,刚添加的7008为7007的从节点:
4.删除结点
删除节点命令格式:
./redis-trib.rb del-node nodeIP:port nodeID
nodeIP:port 待删除节点的ip:端口
nodeID 待删除节点的id,从cluster node中查看
删除已经占有hash槽的结点会失败,报错如下:
[ERR] Node 127.0.0.1:7005 is not empty! Reshard data away and try again.
需要将该结点占用的hash槽分配出去(参考hash槽重新分配)。
Redis的集群搭建的更多相关文章
- Redis本地集群搭建(5版本以上)
Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...
- redis的集群搭建(很详细很详细)
说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...
- linux环境下redis安装(redis伪集群搭建)
redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- Redis Cluster集群搭建与应用
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
- Redis笔记-集群搭建
Redis单机版搭建上一篇已经基本介绍了,下面讨论Redis集群搭建方案和示例. 1.关于Redis常用的集群方案(三种): a.一主多从,如一个Master.两个Slave b.薪火相传,即集群中的 ...
- Redis的搭建和Redis的集群搭建
1.Redis的官网:https://redis.io/ Redis的测试网站:http://try.redis.io/ 2.参考博客:https://www.cnblogs.com/maf ...
- 【Redis】Redis cluster集群搭建
Redis集群基本介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation. Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行 ...
- redis主从集群搭建及容灾部署(哨兵sentinel)
Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...
- Redis Cluster集群搭建<原>
一.环境配置 一台window 7上安装虚拟机,虚拟机中安装的是centos系统. 二.目标 Redis集群搭建的方式有多种,根据集群逻辑的位置,大致可以分为三大类:基于客户端分片的Redis ...
随机推荐
- Windows -- 从注册表删除IE浏览器加载项
Windows -- 从注册表删除IE浏览器加载项 1. 一部分加载项从注册表以下位置直接删除 2. 一部分扩展项从注册表以下位置直接删除
- 关于mysql的报错的1366
报错的的代码: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column ...
- 分享收集的WebGL 3D学习资源
大家好,我在本文中分享了我收集的WebGL 3D相关的博客.书籍.教程.demo等内容,希望对大家学习WebGL和3D有所帮助,谢谢- 相关博客 Wonder技术 Wonder是我们的产品,包含Web ...
- MR 实例
二次排序 点击复制代码:https://www.cnblogs.com/JBLi/p/10764535.html 将上面的代码改成两个 分区 展示的数据 相同的不在一个分区 怎么解决点击查看没有 ...
- [转帖]""(双引号) 与''(单引号) 差在哪?
""(双引号) 与''(单引号) 差在哪? http://wiki.jikexueyuan.com/project/13-questions-of-shell/double-sin ...
- OO_第二单元总结
第二次总结博客(电梯单元) 16071070 陈泽寅 2019.4.20 一:多线程实验初感 这个单元是多线程设计的实践单元,主要让我们运用多线程的原理与思想去完成一个模拟电梯运行的策略.从最开始的单 ...
- jsp学习(2)jsp标签
1.脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式:<%代码片段%>您也可以编写与其等价的XML语句,就像下面这样: ...
- LOJ2276 [HAOI2017] 新型城市化 【二分图匹配】【tarjan】
题目分析: 这题出的好! 首先问题肯定是二分图的最大独立集,如果删去某条匹配边之后独立集是否会变大. 跑出最大流之后流满的边就是匹配边. 如果一个匹配边的两个端点在一个强连通分量里,那这条边删掉之后我 ...
- Linux-高可用Keepalived概念篇
keepalived 高可用 Keepalived介绍 Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可 ...
- OpenLayers学习笔记(十一)— 飞机速度矢量线预测
在机场使用的空管系统中,飞机的速度矢量线差不多是这样的: 模拟飞机飞行时的速度矢量线,这里就大概做个类似效果: 什么叫速度矢量线呢,个人理解就是根据飞机当前速度和航向预测它在未来一段时间内的飞机轨迹, ...