当前位置: 首页 > news >正文

Redis的哨兵模式搭建

Redis的哨兵模式搭建

1、Redis的哨兵模式

Redis的哨兵是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master并将所有slave连接到新的master。
在这里插入图片描述

哨兵的作用

(1)监控
不断地检查master和slave是否正常运行。master存活检测、master与slave运行情况检测。
(2)通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
(3)自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址。

注意:哨兵也是一台redis服务器,只是不提供数据服务。通常哨兵配置数量为单数。

查看sentinel.conf配置文件

在这里插入图片描述

在这里插入图片描述

配置项范例说明
sentinel auth-pass <服务器名称> <密码>sentinel auth-pass mymaster itcast连接服务器口令
sentinel down-after-milliseconds <自定义服务名称><主机地址><端口><主从服务器总量>sentinel monitor mymaster 192.168.194.131 6381 1设置哨兵监听的主服务器信息,最后的参数决定了最终参与选举的服务器 数量(-1)
sentinel down-after-milliseconds <服务名称><毫秒数(整数)>sentinel down-aftermilliseconds mymaster 3000指定哨兵在监控Redis服务时,判定服务器挂掉的时间周期,默认30秒 (30000),也是主从切换的启动条件之一
sentinel parallel-syncs <服务名称><服务器数(整数)>sentinel parallel-syncs mymaster 1指定同时进行主从的slave数量,数值越大,要求网络资源越高,要求约小,同步时间约长
sentinel failover-timeout <服务名称><毫秒数(整数)>sentinel failover-timeout mymaster 9000指定出现故障后,故障切换的最大超时时间,超过该值,认定切换失败, 默认3分钟
sentinel notification-script <服务名称><脚本路径>服务器无法正常联通时,设定的执行脚本,通常调试使用。

2、哨兵模式的搭建

步骤一:将服务调整为一主二仆模式,6379带着6380、6381(不会的可以查看我之前写的博客)。

在这里插入图片描述

步骤二:自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

步骤三:编写sentinel.conf的内容

sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster 123456

其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。auth-pass设置主服务器的密码。

步骤四:启动哨兵

redis-sentinel /sentinel.conf

在这里插入图片描述

步骤五:测试哨兵是否起作用,收动关闭主服务器。

在这里插入图片描述

当主机挂掉,从机选举中产生新的主机
(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)。哪个从机会被选举为主机呢?根据优先级别:replica-priority ,并且原主机重启后会变为从机。
在这里插入图片描述

复制延时

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

故障恢复

在这里插入图片描述
优先级在redis.conf中默认:replica-priority 100,值越小优先级越高,偏移量是指获得原主机数据最全的,每个redis实例启动后都会随机生成一个40位的runid。

相关文章:

  • 闭包、闭包应用场景
  • 瑞吉外卖 —— 2、后台登录和登出
  • 阿里云配置hadoop远程连接Web页面(如50070端口)
  • Linux 任务调度
  • Github每日精选(第32期):HTML智能仪表盘tabler
  • 对多个 CSV 文件做关联
  • 记录一次数据库CPU被打满的排查过程
  • 金九银十准备季:Java IO流面试题(含答案)
  • Kubeadm方式快速搭建K8S集群1.20版本
  • 手把手开发Admin 系列一(设计篇)
  • java计算机毕业设计西安财经大学校园一卡通管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  • 丁鹿学堂前端培训:前端性能优化css篇(一)
  • MASA Stack 第四期社区例会
  • 钓鱼 - deb 包篡改
  • Jackson关于Western Blot、IHC 和 ELISA 的显色检测分析
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 11111111
  • 30天自制操作系统-2
  • 345-反转字符串中的元音字母
  • 5、React组件事件详解
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • HTTP--网络协议分层,http历史(二)
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux gpio口使用方法
  • PHP 7 修改了什么呢 -- 2
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 成为一名优秀的Developer的书单
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 大整数乘法-表格法
  • 强力优化Rancher k8s中国区的使用体验
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信小程序设置上一页数据
  • 我建了一个叫Hello World的项目
  • 系统认识JavaScript正则表达式
  • 消息队列系列二(IOT中消息队列的应用)
  • 用mpvue开发微信小程序
  • 正则表达式小结
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2)nginx 安装、启停
  • (arch)linux 转换文件编码格式
  • (Oracle)SQL优化技巧(一):分页查询
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三)c52学习之旅-点亮LED灯
  • .NET : 在VS2008中计算代码度量值
  • .NET序列化 serializable,反序列化
  • [1181]linux两台服务器之间传输文件和文件夹
  • [Avalon] Avalon中的Conditional Formatting.
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [Codeforces] combinatorics (R1600) Part.2