快速搭建redis5.0集群_一撸向北的博客-CSDN博客_redis5.0.12部署集群


本站和网页 https://blog.csdn.net/qq_20597727/article/details/83385737 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

快速搭建redis5.0集群_一撸向北的博客-CSDN博客_redis5.0.12部署集群
快速搭建redis5.0集群
一撸向北
于 2018-10-25 20:20:56 发布
30258
收藏
38
分类专栏:
redis
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_20597727/article/details/83385737
版权
redis
专栏收录该内容
4 篇文章
1 订阅
订阅专栏
redis主从集群搭建
redis简单主从结构如上图所示,主从结构的redis由主节点负责读写操作,从节点负责读操作,这里做搭建介绍,具体工作原理不分析。
下载安装redis压缩包 解压压缩包,进入redis-5.0文件夹,运行命令./make install安装redis 安装完成进入redis-5.0/src文件夹,执行./redis-server 指定配置文件 即可启动redis redis-cli 默认连接本机6379redis服务器
主从集群的搭建非常简单,要做的有一下的步骤:
注释掉redis-conf配置文件的以下配置,并且在redis-5.0/目录下创建一个文件夹6379-6380 # bind 127.0.0.1
#如果想要redis后台运行泽东配置为yes
daemonize yes
根据redis.conf配置文件,复制两份配置文件到文件夹文件夹6379-6380,模拟在同一台机器上启动两个redis实例。复制文件名为master.conf和slave.conf 修改slave.conf配置文件端口为6380,增加配置slaveof 127.0.0.1 6379 port 6380
#主节点的主机地址和端口号,这里是本机
slaveof 127.0.0.1 6379
在src下执行redis-server命令,分别指定配置文件为刚才配置master和slave配置文件。连接6379的redis服务器,执行info replication,显示如下所示。 # Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=224,lag=0
master_replid:201640b5a63c036087b7a459245a6f6a699b8a36
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:224
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:224
​ 如果执行redis-cli -h 127.0.0.1 -p 6380则是指定连接从节点,执行info replication显示如下
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:462
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:201640b5a63c036087b7a459245a6f6a699b8a36
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:462
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:462
以上搭建起一个简单的主从集群
哨兵主从集群搭建
简单的主从集群有个问题,就是主节点挂了之后,无法从新选举新的节点作为主节点进行写操作,导致服务不可用
。当主节点挂了,尝试执行set命令,报如下错误。
(error) READONLY You can't write against a read only replica.
因此,需要一种机制对主节点挂了的集群进行监控,并且重新选举主节点,这就是哨兵的作用。
搭建哨兵主从集群,需要做以下几个步骤:
主从集群搭建步骤跟上面一样 哨兵创建,需要配置哨兵配置文件,复制一份sentinel.conf到6379-6380文件夹下面,编辑如下配置 #配置监视的进群的主节点ip和端口 1表示至少需要几个哨兵统一认定才可以做出判断
sentinel monitor mymaster 127.0.0.1 6380 1
#表示如果5s内mymaster没响应,就认为SDOWN
sentinel down-after-milliseconds mymaster 5000
#表示如果15秒后,mysater仍没活过来,则启动failover,从剩下从节点序曲新的主节点
sentinel failover-timeout mymaster 15000
然后,就可以执行src目录下的redis-sentinel 指定配置文件 命令,来启动一个哨兵。连接6379端口的主节点,执行shutdown关闭主节点,连接从节点查询状态,过一阵子后,执行info replication,显示如下,编程了主节点 role:master
connected_slaves:0
master_replid:7c049957e22948d8c346154422498159fcd371b6
master_replid2:cb6c2d58d978e917cc75ae6b2b278a3ced21fae8
master_repl_offset:2482
second_repl_offset:1130
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2482
哨兵也可以进行集群,只需要修改配置文件的端口,监听的还是同一个主节点,即可实现哨兵集群。哨兵集群保证哨兵的可用性从而保证redis集群选举的可用性。同时多个哨兵监听还涉及到前面说的哨兵投票机制,需要几个哨兵才能判定主节点下线。
redis-cluster搭建
尽管可以使用哨兵主从集群实现可用性保证,但是这种实现方式每个节点的数据都是全量复制,数据存放量存在着局限性,受限于内存最小的节点,因此考虑采用数据分片的方式,来实现存储,这个就是redis-cluster。
基于原来的主从配置,继续下去,首先主从模式的slaveof host port配置会与cluster配置冲突
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 94
>>> 'slaveof 127.0.0.1 6381'
replicaof directive not allowed in cluster mode
因此配置文件需要做以下改造
# slaveof 127.0.0.1 6379
同时,需要开启redis-cluster配置,配置做以下改造
#配置yes开启redis-cluster
cluster-enabled yes
#配置节点之间超时时间
cluster-node-timeout 15000
#这个配置很重要,cluster开启必须重命名指定cluster-config-file,不能与别的节点相同,否则会启动失败,最好按主机+端口命名
cluster-config-file nodes-6379.conf
cluster-config-file相同时,启动失败,报以下错误
Sorry, the cluster configuration file nodes.conf is already used bySorry, the cluster configuration file nodes.conf is already used by
完成以上配置之后,可以使用src下的redis-server命令,逐个启动redis实例。因为redis-cluster需要使用到ruby,所以需要安装ruby,ubuntu下,apt-get install ruby. 最后是执行创建集群,这里使用的是5.0版本的redis,创建集群命令都从./redis-trib.rb 迁移到redis-cli,可以使用redis-cli --cluster help来查看命令帮助; 执行以下命令,创建集群。 redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1
很不幸,报错如下,提示我们redis服务实例上的数据不为空,因此逐个实例连接,执行flushdb,清空数据。
[ERR] Node 127.0.0.1:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
再次执行命令,成功创建cluster,显示如下,虽然成功创建,但是有个error。提示我们不是所有的slot都被节点覆盖到,官方的建议是使用fix修复
[ERR] Not all 16384 slots are covered by nodes.
执行redis-cli --cluster fix,显示了修正结果,槽位重新分配。
可以执行redis-cli --cluster check host:port检查集群状态slots详细分配。
执行redis-cli --cluster info 127.0.0.1:6382检查集群状态,打印如下,发现redis-cluster自动给节点分配了主从属性,但是6个节点却有四个主节点,导致两个主节点没slave.这样的集群其实是创建失败的,需要删除集群重新创建。
127.0.0.1:6383 (494559b1...) -> 0 keys | 883 slots | 0 slaves.
127.0.0.1:6384 (18b32c4d...) -> 0 keys | 917 slots | 1 slaves.
127.0.0.1:6381 (f2fbb2e0...) -> 0 keys | 6364 slots | 0 slaves.
127.0.0.1:6379 (0c7dd21b...) -> 0 keys | 6401 slots | 1 slaves.
关闭所有服务实例 找到对应的nodes-port.conf文件,删除 重新执行redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1 最后正确创建的话会打印如下信息: creating cluster......
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:6382 to 127.0.0.1:6379
Adding replica 127.0.0.1:6383 to 127.0.0.1:6380
Adding replica 127.0.0.1:6384 to 127.0.0.1:6381
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: e13808e5d468b3e91cf6ef7f06a56a4ab662bde3 127.0.0.1:6379
slots:[0-5460] (5461 slots) master
M: 2a79a606f0b378f765ce5b04fb15e16c540d4021 127.0.0.1:6380
slots:[5461-10922] (5462 slots) master
M: 1ad280f911c1661f223526cb93b13c8e6dab7a88 127.0.0.1:6381
slots:[10923-16383] (5461 slots) master
S: 0b01253b7d5f2927d303545cdd3dd4b774f82e83 127.0.0.1:6382
replicates 1ad280f911c1661f223526cb93b13c8e6dab7a88
S: e07329aea1976dad6d40b936efab920788029252 127.0.0.1:6383
replicates e13808e5d468b3e91cf6ef7f06a56a4ab662bde3
S: 568ac0049c41d93489a1b27aa922215aeb894221 127.0.0.1:6384
replicates 2a79a606f0b378f765ce5b04fb15e16c540d4021
Can I set the above configuration? (type 'yes' to accept):
上面可以清楚看到集群的slot分配信息以及主从节点信息
如果需要动态添加或者删除集群中的节点怎么办?
执行redis-cli --cluster help,显示如下信息:
Cluster Manager Commands:
create host1:port1 ... hostN:portN
--cluster-replicas <arg>
check host:port
info host:port
fix host:port
reshard host:port
--cluster-from <arg>
--cluster-to <arg>
--cluster-slots <arg>
--cluster-yes
--cluster-timeout <arg>
--cluster-pipeline <arg>
rebalance host:port
--cluster-weight <node1=w1...nodeN=wN>
--cluster-use-empty-masters
--cluster-timeout <arg>
--cluster-simulate
--cluster-pipeline <arg>
--cluster-threshold <arg>
add-node new_host:new_port existing_host:existing_port
--cluster-slave
--cluster-master-id <arg>
del-node host:port node_id
call host:port command arg arg .. arg
set-timeout host:port milliseconds
import host:port
--cluster-from <arg>
--cluster-copy
--cluster-replace
help
add-node方法可以添加节点,还可以指定是主节点还是从节点。del-node是删除指定节点。还有其它的fix修复命令,reshard重新分配slot等等。
一撸向北
关注
关注
16
点赞
38
收藏
打赏
评论
快速搭建redis5.0集群
redis主从集群搭建redis简单主从结构如上图所示,主从结构的redis由主节点负责读写操作,从节点负责读操作,这里做搭建介绍,具体工作原理不分析。下载安装redis压缩包解压压缩包,进入redis-5.0文件夹,运行命令./make install安装redis安装完成进入redis-5.0/src文件夹,执行./redis-server 指定配置文件 即可启动r...
复制链接
扫一扫
专栏目录
Redis5.0集群搭建(主从模式)
Lyndon的专栏
09-01
2892
Redis5.0 主从复制
超详细redis 5.0 集群部署
夜灬狼丶
08-02
823
最近部署项目需要使用到redis集群,做个笔记
部署主要步骤:
1 部署单机版redis
2 将以部署好的单机版redis复制多个副本(6个)
3 创建集群
正文
1、创建单机redis
1.1、下载redis
方案一:官网下载: https://redis.io/download
方案二:已上传的csdn资源redis-5.0.13-tcl-8.5.13.tar.gz(包括编译时需要用到的tcl rpm包(适用于centos,已在centos7.6验证通过))
...
评论 6
您还未登录,请先
登录
后发表或查看评论
Redis学习(二)之 Redis Cluster集群
最新发布
royal1235的博客
11-22
258
当客户端向一个错误的节点发出了指令,该节点会发现指令的key所在的槽位并不归自己管,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连接这个节点获取数据。redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用等方面变现一般,特别是在主从切换的瞬间存在。这种方 式下,持有最新数据的slave将会首先发起选举(理论上)。
redis5.0集群搭建
zwj1030711290的CSDN
04-28
396
redis5.0开始,不用ruby就能搭建集群,方便太多。
从零开始吧,我是先学习了单机版redis,分别在centos8.0和ubuntu20.04开了一个单机版,测试都没问题。等到集群时发现哪哪都不顺,所以记录下来。
回顾:
1.centos下
yum install -y gcc #依赖gcc,所以必须安装
wget http://download.redis.io/releases/redis-5.0.5.tar.gz ...
redis 5.0 集群搭建
weixin_30617561的博客
06-23
50
今天主要分享一下 redis 3主3从 集群的搭建过程。redis经常用来做缓存,可以提升读取数据的速度,数据都是存在内存中的,采用 RDB 或者 AOF 持久化存储后便可以实时落地到硬盘。本次主要是3主3从。架构原理如下:
题图:来自于网络
图片中的每一个圆圈都代表一台服务器。客户端访问任何一台服务器便可以连通任何服务器。当老的主节点也就是 master 节点挂掉时,会进行重...
搭建redis5.0.5 集群
qq_37377136的博客
10-19
291
redis的官方集群教程(单机): https://redis.io/topics/cluster-tutorial
官方说明搭建三主三从,以后搭建集群最好为单数。
准备测试集群机器如下:
redis1: 192.168.11.182
redis2: 192.168.11.184
redis3: 192.168.11.185
一、便于区分机器,在这里我们修改下主机名
redis1: hostn...
【启动Redis报错:FATAL CONFIG FILE ERROR】
weixin_45072910的博客
12-07
6633
一、Redis启动错误:Reading the configuration file, at line 194>>> 'always-show-logo yes’Bad directive or wrong number of arguments 解决记录
报错情况
[root@xxx-0001 src]# redis-server /etc/redis-cluster/redis-7001.conf
*** FATAL CONFIG FILE ERROR ***
Reading the
redis 集群方案
无名小生
12-01
4365
redis 集群方案的介绍(主从模式、哨兵模式、Redis Cluster模式)
一、主从模式
将数据完全存储在单个redis中主要存在两个问题:
数据备份和数据体量较大造成的性能降低。
Redis的主从模式为这两个问题提供了一个较好的解决方案。主从模式指的是使用一个redis实例作为主机,其余的实例作为备份机。
主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。
主从模式很好的解决
架构师必备:Redis的几种集群方案
Java高级教程、Java架构师、Java进阶教程
05-07
933
结论
有以下几种Redis集群方案,先说结论:
Redis cluster:应当优先考虑使用Redis cluster。
codis:旧项目如果仍在使用codis,可继续使用,但也推荐迁移到Redis cluster。
twemproxy:不建议使用,与codis同为proxy方案,但不如codis(twemproxy不能平滑地扩容)。
客户端分片:应当禁止使用,因为扩容复杂,如果2个服务同时读写,其中一个修改了路由,另一个不修改会有问题。
下面重点介绍Redis cluster和codis。
对于学
redis三:集群配置
admin522043032的博客
05-31
4602
文章目录redis集群配置主从复制搭建哨兵模式集群搭建
redis集群配置
不熟悉redis请先看:redis6学习
主从复制
主从模式指的是使用一个redis实例作为主机,其余的实例作为备份机。主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机
Redis——集群配置
z1171127310的博客
08-22
765
Redis——集群配置
Redis6.2/5.0 集群两种快速搭建方式 | Redis集群的梦游模式/事务/槽位转移 | cluster搭建避坑指南 ,带你起飞
血煞长虹 的专栏
11-17
1647
本文从源头介绍了集群的一些常识,重点详细介绍了redis集群从准备到配置到安装,和它两种搭建方式,redis的集群的梦游模式,以及怎么避免梦游来实现事务。同步介绍了redis集群槽位的转移,以及在搭建过程中遇到的各种问题。总之,redis集群的搭建,有它就够了,来吧,我在这里等你!
slaveof directive not allowed in cluster mode
彪锅锅来啦
09-06
8868
设置slaveof <masterIP> <masterport>
启动该redis
报错 slaveof directive not allowed in cluster mode
将 cluster-enabled yes 设置为 no
重启即可
Redis5.0集群搭建(Redis Cluster)
Lyndon的专栏
09-01
8096
Redis5.0集群搭建RedisCluster
Redis-5.0版本集群搭建
mnicsm的博客
11-23
184
Redis-5.0版本集群搭建Redis-5.0集群搭建源代码下载准备配置文件启动Master节点启动6379节点启动6380节点启动6381节点配置Slave配置信息
Redis-5.0集群搭建
前些天在课堂上学习了Redis集群,老师搭建了一个Redis集群,看着老师边讲边搭建挺容易,但是课后自己搭建了,搭建了一整天才搭建成功。虽然CSDN有很多关于这块的优秀文章,看的再多还不如自己手动搭建一...
Redis5.0集群版搭建
weixin_42309324的博客
03-17
72
上一篇文章已经把单机版的Redis搭建的过程介绍完了,接下来介绍Redis集群版的搭建方法。
首先我们回到local目录在这个目录里面创建一个redis-cluster目录:mkdir redis-cluster
创建一个redis-cluster目录
接着就是复制6份Redis实例放到这个目录下面(Redis实例就是编译好的单机版的Redis),首先复制一份
cp redis/bin red...
Redis的三种集群方案
qq_46284579的博客
03-08
2569
目录
一、主从复制模式
基本原理
命令的不同
优点
缺点
二、哨兵模式(Sentinel)
基本原理
哨兵的作用
优点
缺点
三、Cluster模式
基本原理
Cluster模式的特点(采用无中心结构)
Cluster模式的具体工作机制
优点
缺点
一、主从复制模式
基本原理
主从复制模式包含一个主数据库实例(master),一个或多个从数据库实例(slave)
客户端可以对主数据库进行读写操作,对从数据库只能进行读操作,主数据库写入的数据会实时自动同步
【Redis】Redis集群搭建错误解决方案 “FATAL CONFIG FILE ERROR Reading the configuration file,at line2… ”
热门推荐
王璐
03-05
3万+
【背景】 在Linux上搭建Redis集群,搭建伪分布式,所以只用一台虚拟机运行6个redis实例。redis安装还算顺利,修改好配置文件里的端口号,写好了启动所有redis的.sh文件,启动的时候,报配置文件有错。如下图 【解决方案】 我当时一脸懵,看来是第一个配置文件改的时候,就改出问题了,因...
Sorry, the cluster configuration file nodes.conf is already used by a different Redis Cluster node.
ycsdn10的博客
01-23
1568
一、产生场景
1.安装redis 6.2.6
2.进行RedisCluster集群搭建
二、产生问题
Sorry, the cluster configuration file nodes.conf is already used by a different Redis Cluster node. Please make sure that different nodes use different cluster configuration files.
三、解决方式
...
聊聊Redis的各种集群方案、及优缺点对比
Seky_fei的博客
07-09
8291
由于最近在忙找工作的事,先把大纲列出来,后续进行详细的再补充。望见谅......
1.主从模式
2.哨兵模式
3.各大厂的Redis集群方案
(1)客户端分片
(2)代理分片
(3)Codis
4.Redis Cluster
...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:书香水墨
设计师:CSDN官方博客
返回首页
一撸向北
CSDN认证博客专家
CSDN认证企业博客
码龄8年
阿里巴巴深圳技术有限公司
73
原创
13万+
周排名
145万+
总排名
50万+
访问
等级
4065
积分
255
粉丝
299
获赞
90
评论
1071
收藏
私信
关注
热门文章
spring源码阅读--@Transactional实现原理
43562
@Transactional注解不起作用解决办法及原理分析
34813
快速搭建redis5.0集群
30258
spring cloud Ribbon的使用和实现原理
29484
spring boot整合redis集群,连接虚拟机redis集群,Unable to connect to 127
26129
分类专栏
spring boot
9篇
Reactive
1篇
nio
1篇
https
1篇
rmi
1篇
java lib
4篇
虚拟机
1篇
zookeeper
2篇
dubbo
5篇
消息中间件
14篇
activeMQ
7篇
kafka
6篇
jvm
4篇
spring源码
12篇
spring cloud
7篇
mybatis
4篇
redis
4篇
设计模式
6篇
idea
1篇
jwt
1篇
nginx
3篇
mysql
5篇
git
最新评论
Mybatis源码分析导读图
qq_32236925:
感谢博主的分享,’模块职能分析‘那里有点貌似有点描述瑕疵,Configuration:管理者解析*Mapper.xml得到的配置信息--》Configuration:管理着解析*Mapper.xml得到的配置信息,是管理着,不是管理者。这点容易让人疑惑。
redis集群+JedisCluster+lua脚本实现分布式锁
宫徵羽角商:
太强了,哥哥, 我爱你, 木马木马mua~~~
深入了解mysql--gap locks,Next-Key Locks
谭大酱:
博主你好,唯一索引或者非唯一索引范围检索gap锁原则分析下的情况2为什么我测试出来的insert into gap_tbz values(11,'cc'); 是可以运行的,是不是锁的也是两边空区间?也就是(5, 11)而不是(5, 11]
spring源码阅读--@Transactional实现原理
落星Vladimir:
问题是dao层执行事务的意义是在@Transaction结束时所有涉及的jdbc统一commit,controller和service层执行事务的意义是什么?回滚的意义是什么?
@Transactional注解不起作用解决办法及原理分析
JGYBZX_G:
我的问题是因为没有抛出异常,谢谢作者
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
redis缓存一致性问题解决方案
mysql调优--从哪几个方面入手
脏读、不可重复读、幻读和快照读、当前读
2019年12篇
2018年62篇
目录
目录
分类专栏
spring boot
9篇
Reactive
1篇
nio
1篇
https
1篇
rmi
1篇
java lib
4篇
虚拟机
1篇
zookeeper
2篇
dubbo
5篇
消息中间件
14篇
activeMQ
7篇
kafka
6篇
jvm
4篇
spring源码
12篇
spring cloud
7篇
mybatis
4篇
redis
4篇
设计模式
6篇
idea
1篇
jwt
1篇
nginx
3篇
mysql
5篇
git
目录
评论 6
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
一撸向北
嘿嘿嘿,赏一个
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值