【学习笔记】redis 6.0.3 三主三从集群搭建

linux系统搭建redis三主三从 **linux系统搭建redis三主三从** 这是csdn博客的第一篇分享,哈哈以前我都是51cto的粉丝(51cto的博客是:https://blog.51cto.com/lmy666) 好了进入正题: 三台服务器每台服务器起两个redis进程(一个主线程,一个从线程)因服务器缺少原因现使用两台服务器 搭建,原理和步骤同样 1)创... 阅读详情

一、简介

Redis集群(Redis Cluster) 是Redis提供的分布式数据库方案,通过 分片(sharding) 来进行数据共享,并提供复制和故障转移功能。相比于主从复制、哨兵模式,Redis集群实现了较为完善的高可用方案,解决了存储能力受到单机限制,写操作无法负载均衡的问题。
三主三从集群模式搭建,环境基于centos7 + Redis6.0.3

本文记录学习redis集群的实践总结,逐步介绍搭建集群环境的过程。

二、环境搭建

1、Redis

redis使用的是6.0.3版本,安装教程可以看【学习笔记】Redis-搭建 centos7 安装redis 6.0.3

2、服务器

为了更改地贴近真实场景,三主三从模式部署在三台服务器上,服务器方面我这边依旧采用VMware16 pro创建centos7虚拟机,搭建三台,每台各起两个redis服务:

192.168.229.100:7290 192.168.229.100:7291
192.168.229.120:7290 192.168.229.120:7291
192.168.229.130:7290 192.168.229.130:7291

三、集群搭建

1、创建集群文件夹,存放不同配置文件

[root@root ~]# cd /usr/local
[root@root local]# mkdir redis-cluster
[root@root local]# cd redis-cluster
[root@root redis-cluster]# mkdir 7290 7291
[root@root redis-cluster]# ls
7290 7291

2、对7290进行配置

复制配置到7290文件夹底下

[root@root redis-cluster]# cd 7290
[root@root 7290]# cp /usr/local/redis/redis.conf .
[root@root 7290]# ls
redis.conf

修改7290配置

[root@root 7290]# vim redis.conf

port 7290 ## 7290端口
daemonize yes ## 后台启动
bind 192.168.221.150 ## 指定bind的IP
cluster-enabled yes ## 开启redis-cluster集群
cluster-config-file nodes_7290.conf ## 每个实例还包含存储此节点配置的文件的路径
cluster-node-timeout 5000 ## 超时时间
appendonly yes ## 开启aof

3、同步修改7291配置

复制7290的配置

[root@root 7290]# cp redis.conf ../7291
[root@root 7290]# sed -i 's/7290/7291/g' ../7291/redis.conf

4、启动redis

[root@root 7290]# cd /usr/local/bin
[root@root bin]# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
[root@root bin]# ./redis-server /usr/local/redis-cluster/7290/redis.conf
[root@root bin]# ./redis-server /usr/local/redis-cluster/7291/redis.conf

查看启动状态

[root@root bin]# ps -ef|grep redis
root       1697      1  0 17:56 ?        00:00:00 ./redis-server 192.168.229.100:7290 [cluster]
root       1703      1  0 17:56 ?        00:00:00 ./redis-server 192.168.229.100:7291 [cluster]

5、以相同的方式部署其他两台服务器

6、开启集群总线端口

防火墙关闭的童鞋可忽略
这是我作为小白遇到的一个坑,在启动集群的时候还有端口没有开启导致一直wait

redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
集群总线端口为redis客户端连接的端口 + 10000

我们使用的是7290和7291端口,因此三台服务器都需要开启17290和17291端口

firewall-cmd --zone=public --add-port=17290/tcp --permanent
firewall-cmd --zone=public --add-port=17291/tcp --permanent
firewall-cmd --reload

四、集群启动

1、redis-cli创建集群

redis5.0之后,可以直接使用redis-cli直接创建集群,通过该方式创建的会自动分配主从节点,并且redis集群会尽量把主从服务器分配在不同机器上

[root@root bin]# ./redis-cli -a redis --cluster create 192.168.229.100:7290 192.168.229.100:7291 192.168.229.120:7290 192.168.229.120:7291 192.168.229.130:7290 192.168.229.130:7291 --cluster-replicas 1

集群参数解释:
-a redis:redis 是密码 根据各自情况配置
cluster-replicas 1:表示希望为集群中的每个主节点创建一个从节点(一主一从)
cluster-replicas 2:表示希望为集群中的每个主节点创建两个从节点(一主二从)
我们采用的是cluster-replicas 1 三主三从

如果出现以下报错,是因为服务器端口未开启,防火墙开启端口即可,如果怕麻烦就关闭防火墙(自己玩玩不用管)

[ERR] Node 192.168.229.100:7290 NOAUTH Authentication required
firewall-cmd --zone=public --add-port=7290/tcp --permanent
firewall-cmd --zone=public --add-port=7291/tcp --permanent
firewall-cmd --reload

开启后重新执行,以下是执行成功结果

[root@root bin]# ./redis-cli -a redis --cluster create 192.168.229.100:7290 192.168.229.100:7291 192.168.229.120:7290 192.168.229.120:7291 192.168.229.130:7290 192.168.229.130:7291 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.229.120:7291 to 192.168.229.100:7290
Adding replica 192.168.229.130:7291 to 192.168.229.120:7290
Adding replica 192.168.229.100:7291 to 192.168.229.130:7290
M: 1446a302ed93eb5d5f9ef22587ff63ecbaa56660 192.168.229.100:7290
   slots:[0-5460] (5461 slots) master
S: 281309a7a74f83937b4bdf7962ba89372ed54d9b 192.168.229.100:7291
   replicates 61e8850a0f0fc33cf1ed3a308c198ad2de915a47
M: bd489bd8e9bb2f9894889e2b0709b1f881f8f294 192.168.229.120:7290
   slots:[5461-10922] (5462 slots) master
S: 2287abe686cf00645509afaeed6d3941516b1842 192.168.229.120:7291
   replicates 1446a302ed93eb5d5f9ef22587ff63ecbaa56660
M: 61e8850a0f0fc33cf1ed3a308c198ad2de915a47 192.168.229.130:7290
   slots:[10923-16383] (5461 slots) master
S: c17bcaa2b613df2e3ec09792bceb0e4b7f9bab24 192.168.229.130:7291
   replicates bd489bd8e9bb2f9894889e2b0709b1f881f8f294
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 192.168.229.100:7290)
M: 1446a302ed93eb5d5f9ef22587ff63ecbaa56660 192.168.229.100:7290
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 281309a7a74f83937b4bdf7962ba89372ed54d9b 192.168.229.100:7291
   slots: (0 slots) slave
   replicates 61e8850a0f0fc33cf1ed3a308c198ad2de915a47
M: bd489bd8e9bb2f9894889e2b0709b1f881f8f294 192.168.229.120:7290
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 2287abe686cf00645509afaeed6d3941516b1842 192.168.229.120:7291
   slots: (0 slots) slave
   replicates 1446a302ed93eb5d5f9ef22587ff63ecbaa56660
M: 61e8850a0f0fc33cf1ed3a308c198ad2de915a47 192.168.229.130:7290
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: c17bcaa2b613df2e3ec09792bceb0e4b7f9bab24 192.168.229.130:7291
   slots: (0 slots) slave
   replicates bd489bd8e9bb2f9894889e2b0709b1f881f8f294
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

2、Waiting问题处理

如果忘了开放端口导致一直Waiting for the cluster to join…,那就先停止集群启动,先去开放端口(当然,防火墙都直接关闭了的就省略这个好吧)

开启后不能直接重启执行开启集群命令,不然会出现以下报错:

[ERR] Node 192.168.229.100:7290 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决办法:

1、先kill redis创建的集群节点进程
2、删除appendonly.aof、dump.rdb、nodes.conf文件,文件位置在数据存储目录:/usr/local/redis/data
3、执行./redis-cli flushdb 命令,清空每个redis里面的数据。
4、重启redis节点,再重新启动集群即可

五、集群操作

1、查看集群信息

选择一个节点进入

redis-cli -a redis -h ip -p 端口 -c

[root@root redis-cluster]# redis-cli -a redis -h 192.168.229.100 -p 7290 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.229.100:7290> cluster nodes
281309a7a74f83937b4bdf7962ba89372ed54d9b 192.168.229.100:7291@17291 slave 61e8850a0f0fc33cf1ed3a308c198ad2de915a47 0 1648729497085 5 connected
bd489bd8e9bb2f9894889e2b0709b1f881f8f294 192.168.229.120:7290@17290 master - 0 1648729497085 3 connected 5461-10922
2287abe686cf00645509afaeed6d3941516b1842 192.168.229.120:7291@17291 slave 1446a302ed93eb5d5f9ef22587ff63ecbaa56660 0 1648729498094 4 connected
61e8850a0f0fc33cf1ed3a308c198ad2de915a47 192.168.229.130:7290@17290 master - 0 1648729499103 5 connected 10923-16383
c17bcaa2b613df2e3ec09792bceb0e4b7f9bab24 192.168.229.130:7291@17291 slave bd489bd8e9bb2f9894889e2b0709b1f881f8f294 0 1648729498094 6 connected
1446a302ed93eb5d5f9ef22587ff63ecbaa56660 192.168.229.100:7290@17290 myself,master - 0 1648729498000 1 connected 0-5460
192.168.229.100:7290> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:3367
cluster_stats_messages_pong_sent:3434
cluster_stats_messages_sent:6801
cluster_stats_messages_ping_received:3429
cluster_stats_messages_pong_received:3367
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:6801

2、数据验证操作

插入数据

192.168.229.100:7290> set testkey "Hello World"
OK
192.168.229.100:7290> get testkey
"Hello World"

从其他节点获取刚才插入的数据

[root@root bin]# redis-cli -a redis -h 192.168.229.120 -p 7291 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.229.120:7291> get testkey
-> Redirected to slot [4757] located at 192.168.229.100:7290
"Hello World"

至此,集群搭建成功。

Linux系统部署Redis集群服务(3主3从) 进入节点执行,cluster reset 重置集群(逐个节点重置,然后重新建群,配置) ※处于新建阶段可以,已使用中的集群服务慎用此法!搭建集群,进入一个客户端,输入命令连接不同开启集群的节点 (1qaz2wsx 为前步骤配置文件中配置的密码)※如果是应用服务与redis集群不在同一部机器,bind 一定要配置为 ip4地址和127.0.0.1。在以上目录中分别放入redis.conf配置文件(可以区别命名)下图中红圈内文件,其他的是自动生成的。解决方案,进入节点,移除指派给当前节点的所有槽。 阅读详情

相关推荐

Linux教程:如何安装redis服务并搭建三主三从集群部署环境

Linux教程:如何安装redis服务并搭建三主三从集群部署环境

wfeil211的博客 1206

Redis集群搭建(三主三从)

每台机器有两个节点,一共六个节点(三主三从),主节点和从节点不在同一台机器上(避免服务器宕机带来不必要的麻烦),如果你有条件直接用六台机器!

qq_41786090的博客 3826

Redis三主三从集群搭建(三台机器)

192.168.100.21 master 192.168.100.22 slaves1 192.168.100.22 slaves2 一、上传解压 1、上传 2、解压 [root@master servers]# pwd /opt/servers [root@master servers]# tar -zxvf redis-5.0.8.tar.gz -C /opt/servers/ 安装redis的相关依赖 ...

weixin_44519124的博客 1万+

linux安装redis、搭建三主三从cluster集群

安装最新版本redis,首先查看redis最新版本,上官网:https://redis.io/ 截止2019.09.20为止,最新版本为 redis-5.0.5.tar.gz 。 打开linux终端,进入某个目录,执行下载安装包指令:wget http://download.redis.io/releases/redis-5.0.5.tar.gz 解压缩安装包:tar -zxfredis-...

dgh112233的博客 1264

Redis三主三从集群搭建

一、Redis简介官网给的定义大概意思是:Redis是一个开源,内存数据结构存储,用作数据库,缓存和消息代理。它支持的数据结构有:字符串,哈希,列表,集合,有序集合,位图,超级日志和具有半径查询的地理空间索引。Redis是一个高性能的支持主从同步的key-value数据库。二、集群搭建1>系统环境 本地用VirtualBox安装三台配置一样的Centos虚拟机查看版本:2>三主三从架构...

rui920418的博客 1万+

Redis搭建集群,三主三从集群模式

几种常见的redis集群模式: 方案一:主从复制 优点: 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然 必须由Master来完成 Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。 Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端 仍然可以提交查询或修改请求。 Slave Server同样是

xiefazhi的博客 8417

redis集群搭建(三主三从)

这个往往是由于主node移除了,但是并没有移除node上面的slot,从而导致了slot总数没有达到16384,其实也就是slots分布不正确。所以在删除节点的时候一定要注意删除的是否是Master主节点。每台机器有两个节点,一共六个节点(三主三从),主节点和从节点不在同一台机器上,有条件当然可以选择使用6台机器。拷贝bin/redis.conf 6379和6380的目录下面。发现有四个节点不在集群当中了,大概可能和设置密码有关系。启动与停止与开机自启动。启动与停止与开机自启动。并分别修改他们的端口。

海贼王的博客 4650

一文搞定windows下redis的集群搭建(三主三从)

快速在windows下搭建redis三主三从集群

piaow_的博客 7597

redis集群实战部署 - 实战三主三从

redis集群,实战,cluster

User_bie的博客 4084

Redis搭建集群模式

Redis 搭建集群的优缺点优点:支持数据的水平扩展,可以处理大规模数据提供高可用性,节点失效时能够自动进行故障转移高并发性能缺点:配置和管理复杂度较高不支持多键操作,某些命令在集群模式下受到限制需要更多的资源和节点来维持高可用性和性能。

小李同学的博客 1万+

基于Docker 搭建Redis三主三从分布式集群

redis分布式系统搭建,三主三从,包含集群报错报错处理。

weixin_45328507的博客 1611

nosql----redis三主三从集群部署

Redis集群是一个提供在多个Redis间节点间共享数据的程序集(路由), Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误 Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下可继续处理命令.本章详细介绍Redis三主三从集群部署。

Linux运维老纪的博客 1887

redis5.0 3主6从集群搭建

redis5.0 --- 3主6从集群搭建 redis下载: https://redis.io/download ​​ 安装依赖 yum install gcc 下载redis-5.0.5.tar.gz 上传到ip为192.168.0.111 下的/usr/local/src/redis 3. 解压redis : tar -vxvf redis-5.0.5.tar.gz ...

qq_31828839的博客 2392

Linux环境下Redis三主三从集群搭建

Linux环境下三主三从集群搭建,亲测可用。附踩坑记录。

m0_48333563的博客 1721

Redis6集群搭建

Redis6集群搭建 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Redis6集群搭建前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正

kuangpengfei的博客 4099

Windows下用Docker部署RagFlow的5个常见错误及解决方法(附详细日志分析)

本文针对Windows系统下使用Docker部署RagFlow的常见难题,提供了详细的避坑指南。文章深度剖析了WSL2配置、端口冲突、文件权限、资源限制及网络通信这五个典型错误场景,并结合具体日志分析,给出了经过验证的解决方案,帮助开发者高效完成部署。

weixin_29233857的博客 179

手把手教你搭建Redis集群

之前在搭建Redis集群的时候,发现全网找不到一篇完整教程,即从安装Docker环境开始,到项目中使用Redis集群结束的过程。自己也在搭建过程中踩了许多坑,今天就把搭建过程记录下来,既便于自己之后回顾,也希望可以帮到其他人。

weixin_49426115的博客 3940

A B C三个气象站的小波分析结果解读

在小波分析的过程中,信号的不同频率分量会在不同的尺度上显现,而纵轴上的数值表示信号在相应尺度上的强度或能量。2. **小波方差的横轴(水平轴)**:横轴上的尺度表示用于分析的小波函数的尺度。1. **共同趋势:** 在所有三个点的小波方差图中,随着尺度的增加,方差逐渐增大,尤其是在较大的时间尺度上。3. **尺度30的特殊性:** 在所有点的小波方差图中,尺度30似乎是一个特殊的点,对应着一个较长的时间尺度上的波动或变化。2. **方差的大小:** 方差的大小反映了在相应尺度下信号的波动强度。

weixin_44259522的博客 859

Docker搭建Redis三主三从集群

回顾整个过程,我们从拉取Redis镜像开始,创建了6个节点的配置文件和目录,启动了6个Redis容器,最后通过集群初始化命令将它们组成了一个三主三从的Redis集群。数据分片:3个主节点分别存储不同范围的哈希槽数据备份:每个主节点都有一个从节点实时同步数据高可用:当主节点出现故障时,从节点可以自动接管工作。

chen1108____的博客 786

zedboard(5)spi轮询和中断

一个SPI可以有几个从设备 在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。 备注:只选一个ss,可以不用指定。(感觉,还没测试) 这是xspips.c中定义的函数,发送和接收有 XSpiPs_Transfer 和 XSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。    一、轮询模式 米联客参考代码,SpiPs_Init中部分和官方例程流程一样,Spi

Kiss丶小坏 5890

如何让 Mac mini 24小时不休眠运行 OpenClaw

如果 OpenClaw 每 5-10 分钟自动退出,launchd 连续 4 次快速重启后会判定为崩溃循环并卸载服务。:方案一(pmset)+ 方案三(launchd)组合使用,既防止系统休眠,又保证 OpenClaw 开机自启和崩溃自动恢复。:caffeinate 只在进程运行期间有效,终端关闭或进程结束后系统恢复正常睡眠策略。这条命令会自动创建 launchd plist 并启用服务,是最推荐的方式。替换为你的实际用户名路径,Node.js 路径也要改成你自己的。确保 plist 中有。

Maynor的博客 2204

redis三主三从集群搭建

redis三主三从集群搭建

weixin_44111939的博客 2072

万字长文,YOLOv8 yaml 文件解析 | 一文搞定 YOLOv8 分类任务,检测任务,分割任务,关键点任务

YOLOv8 yaml 文件解析 | 一文搞定 YOLOv8 分类任务,检测任务,分割任务,关键点任务

Coding... 1万+
上一篇: 【学习笔记】Redis-搭建 centos7 安装redis 6.0.3
下一篇: 【学习笔记】centos docker 搭建
Write_Cool
博客等级 码龄7年 153粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值