Redis主从复制+哨兵模式
创始人
2024-03-17 08:03:06
0

必读

redis的主从复制是单向的,只能有主节点到从节点,主节点以写为主从节点以读为主不能写入数据!因为系统的80%的需求都是读的需求。

redis服务默认自己是主节点,一个主节点由一个或多个从节点,一个从节点只有一个主节点。

全量复制:redis的从节点挂掉了,当再次连接到主机后,会全量复制主节点的所有数据来保证数据的一致性;
增量复制:当主节点挂掉了,从节点再次连接到重启后的主节点时,主节点存入新的数据,从节点也会存入相同的数据;

查看当前redis信息:

登录redis:

redis-cli -p 6379

在这里插入图片描述
有密码的话执行命令:AUTH 设置的redis的密码

查看主从redis的信息:

 info replication

在这里插入图片描述
role:角色为主节点(默认值)
connected_slaves:连接的从节点数

主从复制配置

我这里有三台服务器,因为redis默认自己是主节点所以在其中任选一台作为主节点,这个服务器的redis不用配置,我们去吧哪两个服务器的redis配置成这个主节点redis的从节点;

在两个从节点服务器连接redis后都执行:

slaveof 8.142.99.94 6379

在这里插入图片描述
slaveof :主从复制的命令
8.142.99.94 :主节点ip
6379 : 主节点redis的端口号

注意:如果主节点redis设置了密码一定要在从节点的配置文件中写上;所有节点的redis密码必须一样
在这里插入图片描述
加上主节点密码后再次连接即可;

在这里插入图片描述
在这里插入图片描述
可以看到两个从节点都连接上了主节点;

在这里插入图片描述
主节点也看到这两个从节点的信息了。

测试:
主节点

在这里插入图片描述
从节点1
在这里插入图片描述
从节点2
在这里插入图片描述
主从复制完成;

哨兵模式

1) 哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
2) 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点挂掉时,哨兵会第一时间感知到,并且在slave节点中重新选出来一个新的master,然后将新的master信息通知给client端,从而实现高可用。这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息
3) Sentinel 哨兵是redis官方提供的高可用方案,它可以用来监听多个redis实例的运行情况.

Sentinel是一个进程我们需要启动它,启动方式和redis一样;

新建一个sentinel文件;
在这里插入图片描述
文件夹中在新建一个conf和log文件夹;

在conf文件夹中创建一个名为sentinel.conf文件;在这里插入图片描述
文件内容:

port 26379
dir "/var/log/sentinel"
logfile "/var/log/sentinel/sentinel-log.log"
# sentine1 monitor关键字
# master 给主从服务器集群起一个名字(监控主服务器,从服务器的信息也就获取了)主服务器的IP和端口
# 2主服务器失效的统计数,超过2票就认为失效
sentinel monitor mymaster 8.142.99.94 6379 1
# 如果主服务器redis有密码就在此设置主节点redis的密码
sentinel auth-pass mymaster 123456789
# 主服务器下线超过30秒就进行切换(默认30S)
#sentinel down-after-milliseconds mymaster 30000

在这里插入图片描述

port:sentinel的端口号(以后就是连接sentinel有sentinel去转发操作redis的命令)
dir : sentinel的工作目录用于生成文件;
logfile :日志文件的目录
sentinel monitor :设置监控的redis主机
mymaster :微监控的主机redis取一个名字 ;
192.168.243.4 : 监控主机的ip
6379 : redis的端口号
1 :有一个sentinel 连接不上主机的redis时认为主机挂掉了,这时就需要故障转移;

启动测试:

docker run -d --name sentinel -v /mydocker/sentinel/conf/sentinel.conf:/conf/sentinel.conf -v /mydocker/sentinel/log:/var/log/sentinel  redis:6.2.6 redis-sentinel /conf/sentinel.conf

1、首先停止主节点redis服务
在这里插入图片描述
可以看到主节点变更了;
在这里插入图片描述
这个从节点的主节点也改成新的主节点了;
在这里插入图片描述
现在重启原先的主节点;
在这里插入图片描述
可以看到自动成为从节点并连接到了新的主节点了;
在这里插入图片描述
连接状是down 是因为没有在redis配置文件中配置主节点redis的连接密码:

 masterauth 123456789

在配置文件中添加以上代码即可:
在这里插入图片描述
重启redis:
在这里插入图片描述
数据同步成功!

我这里在增加两个sentinel(哨兵),分别在这两个新的从机上启动sentinel进程使sentinel也实现高可用!
我这里重新停止了当前的sentinel进程重新在这三台服务器上创建sentinel进程;
按照上面启动sentinel的步骤在这三台服务器上创建即可:
在这里插入图片描述

port 26379
dir "/var/log/sentinel"
logfile "/var/log/sentinel/sentinel-log.log"
# sentine1 monitor关键字
# master 给主从服务器集群起一个名字(监控主服务器,从服务器的信息也就获取了)主服务器的IP和端口
# 2主服务器失效的统计数,超过2票就认为失效
sentinel monitor mymaster 43.143.198.158 6379 2
# 如果主服务器redis有密码就在此设置主节点redis的密码
sentinel auth-pass mymaster 123456789
# 主服务器下线超过10秒就进行切换(默认30S)
#sentinel down-after-milliseconds mymaster 30000

分别这在三台服务器上启动即可:

docker run -d --name sentinel -v /mydocker/sentinel/conf/sentinel.conf:/conf/sentinel.conf -v /mydocker/sentinel/log:/var/log/sentinel  redis:6.2.6 redis-sentinel /conf/sentinel.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到全部成功即可:

springboot配置:

spring:redis:timeout: 5000sentinel:master: mymasternodes: 8.142.97.14:26379,43.143.198.158:26379,8.142.99.94:26379

完事!

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...