Redis一主多从、薪火相传、反客为主、哨兵模式搭建详细步骤

本文主要是介绍Redis一主多从、薪火相传、反客为主、哨兵模式搭建详细步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主从复制

无论何时为主机加上一个从机,都会复制主机的所有数据;从机不能再写,主机可读可写;
一主二仆
主机down机后,从机将默认会继续等待主机上线;设置从机的主机时,可以在从机的配置文件中进行修改,也可以在从机启动的客户端进行修改,主机的配置文件不需做修改。
以下用6379端口做主机,6380端口做从机并在配置文件中指定主机,6381端口做从机并在客户端指定主机
一、配置文件方式配置主从复制
1、6379端口的配置文件
#开启守护进程   
daemonize  yes
#指定端口号  
port   6379
#Log文件名字 ,(默认位置与服务端启动位置同一层级)   
logfile   "/home/6379.log"
#pid
pidfile "/var/run/redis_6379.pid"#Dump.rdb名字   dbfilename  (默认位置与服务端启动位置同一层级)
dbfilename "redis6379.rdb"
#Dump.rdb基础位置
dir "/home/"
#关掉aof持久化
appendonly  no

 

2、6380端口的redis配置文件
#开启守护进程   
daemonize  yes
#指定端口号  
port   6380
#Log文件名字 ,(默认位置与服务端启动位置同一层级)   
logfile   "/home/6380.log"
#pid
pidfile "/var/run/redis_6380.pid"#Dump.rdb名字   dbfilename  (默认位置与服务端启动位置同一层级)
dbfilename "redis6380.rdb"
#Dump.rdb基础位置
dir "/home/"
#关掉aof持久化
appendonly  no#   *******一下是从服务器的配置******
#主机地址配置:slaveof host port
slaveof 127.0.0.1 6379
#主机密码:masterauth   (若未设置,则不配置;)
masterauth root

 

二、查看6379与6380主从复制连接状态
1、重新启动6379端口及6380端口的服务
2、登录6379端口的客户端,查看主从复制信息
info replication

可以看到已经连接到了1个从机,此时对主机进行修改,从机的数据也会修改,且从机不能再进行写操作

三、用客户端命令方式配置主从复制
1、6381端口的配置文件
#开启守护进程   
daemonize  yes
#指定端口号  
port   6380
#Log文件名字 ,(默认位置与服务端启动位置同一层级)   
logfile   "/home/6380.log"
#pid
pidfile "/var/run/redis_6380.pid"#Dump.rdb名字   dbfilename  (默认位置与服务端启动位置同一层级)
dbfilename "redis6380.rdb"
#Dump.rdb基础位置
dir "/home/"
#关掉aof持久化
appendonly  no#   *******一下是从服务器的配置******
#主机密码:masterauth   (若未设置,则不配置;)
masterauth root

 

2、修改完配置文件,重新启动redis服务器,进入redis客户端,查看主从同步详情
info replication

可以看到6381服务器仍然是主机

3、命令行配置主机
slaveof ip port  即可将本服务器设置为目标主机的从服务器
slaveof 127.0.0.1 6379

配置完成后,可以看到自己已经变成从机,主机为6379端口的服务,且主机为上线状态

薪火相传

以上已经配置了一主二仆的服务架构,同时一个从机也可以为另一个从机的主机
1、创建6382端口的redis服务,配置文件要修改的信息如下
#开启守护进程   
daemonize  yes
#指定端口号  
port   6381
#Log文件名字 ,(默认位置与服务端启动位置同一层级)   
logfile   "/home/6381.log"
#pid
pidfile "/var/run/redis_6381.pid"#Dump.rdb名字   dbfilename  (默认位置与服务端启动位置同一层级)
dbfilename "redis6381.rdb"
#Dump.rdb基础位置
dir "/home/"
#关掉aof持久化
appendonly  no#   *******一下是从服务器的配置******
#主机密码:masterauth   (若未设置,则不配置;)
masterauth root

 

2、启动redis服务,进入redis客户端,查看关联信息
6382服务信息如下
6380服务信息如下
3、关联6380从机
slaveof 127.0.0.1 6380

此时6382服务的已经成为了6380服务的从机

6380此时既是从机又是主机,但6380此时仍是不可写的
由此便完成了6379服务的从机为6380,6380服务的从机为6382的薪火相传效果

反客为主

在薪火传递的基础上,如果主机终止了服务,则可以使从机运行slaveof no one命令使从机变为主机
1、终止6379的服务
2、查看6380服务的状态
此时6380的主机已经宕机
3、将6380从机切换为主机状态
slaveof no one

 

上面的配置模式,在主服务器宕机后需要人员手动完成从机变为主机的操作,显示是不够及时的,利用哨兵模式的机制可以执行一个哨兵进程检测主机服务,当检测到主机宕机后,自动完成从机变为主机的切换

哨兵模式

主机指定一个哨兵从机检测自己,当主机宕机之后,从机自动成为主机;当原主机恢复之后,原主机成为从机。
首先将主从情况修改为6379为主,6380、6381、6382为从
一、修改6379主机的 sentinel.conf 配置文件
在redis根目录下,有一个sentinel.conf文件,如下所示
1、添加配置内容如下
sentinel monitor mymaster 127.0.0.1 6379 1
#后台方式运行
#daemonize yes

 

sentinel monitor 主节点名称  ip  端口号 认证个数
主节点名称自定义,选举次数即至少几个哨兵认定主机宕机才重新选举
2、如果有密码,则设置密码
sentinel auth-pass <master-name> <password>

 

二、启动哨兵
1、在bin目录下
./redis-sentinel ../sentinel.conf

哨兵选择新的主服务器是随机挑选的,也可调整从服务器成为主服务器的优先级,在从服务器的redis.conf配置文件中配置

#值越小,优先级越高
slave-priority 100

 

2、sentinel服务启动运行日志如下
3、项目开启之后sentinel.conf末尾处将会添加从机的信息
三、关闭6382主机服务
1、kill杀死6382服务对的进程
2、 sentinel服务显示6382已经宕机
3、kill杀死6379主机
4、稍等片刻,查看 sentinel日志
 
红框一
原6379端口的主机服务显示被主观判定宕机,由于1.1当中设置一个sentinel服务认证宕机后,即认为主机宕机,因此后续日志显示客观宕机因此进行选举。
严格来说,只有一个sentinel服务来进行判断是不合理的,因为有可能是sentinel进程自身网络波动问题导致检测不到主机的状态,因此需要多个sentinel服务进行检测,此处不是生产环境,因此没有严格按照规范。所谓主观宕机,是一个sentinel认为主机出现了宕机情况;所谓客观宕机,是指认为主机宕机的sentinel服务树达到了在配置文件中设置的参数的数量。
红框二
客观宕机之后,即对从机进行选举,选举确认6380从机作为主机
红框三
6380从机正式切换为主机,6379已经成为从机,此时关联6379从机以及6381从机,6379为宕机状态,6381为在线状态
四、查看配置文件变化
注意:此时哨兵进程配置文件sentinel.conf、6380配置文件redis.conf、6381配置文件redis.conf均已自动发生变化
1、哨兵进程配置文件 sentinel.conf
原先显示的是6380及6381,现已自动切换为6379及6381
2、 6380配置文件redis.conf
原先配置的slaveof 127.0.0.1 6379信息已自动删除
3、 6381配置文件redis.conf
原先配置的slaveof 127.0.0.1 6379已自动更换为slaveof 127.0.0.1 6380
4、 6379配置文件redis.conf
其配置文件暂时没有变化,注意是暂时
五、恢复6379服务
1、查看哨兵服务日志变化
哨兵检测到6379服务恢复,并将其转化为从机,关联至主机6380上
2、 6 379配置文件redis.conf
此时其配置文件发生了变化,自动添加了slaveof 127.0.0.1 6380这一行参数
3、重新启动6379服务器
查看哨兵服务sentinel的日志
4、进入6379客户端
可以看到6379已经切换为6380的从机
 
注意:如果启动后发现6379成为了从机,但显示6380的状态为down,是因为6379的redis配置文件中未配置关联主机的密码,添加上密码即可

注意

最好主从服务器密码要一致,防止主从服务器切换后密码不一致导致的错误
修改完配置文件后,先停止服务器,再启动服务器,很多错误是因为配置文件修改后未生效引起的

这篇关于Redis一主多从、薪火相传、反客为主、哨兵模式搭建详细步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/603323

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL