Redis的哨兵模式Sentinel

sentinel功能

redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。

1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换

2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。这个需要我们指定相关的代码,比如发邮件、事务的处理等等

3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口

注意:在使用sentinel监控主从节点的时候,从节点需要是使用动态方式配置的,如果直接修改配置文件,后期sentinel实现故障转移的时候会出问题

主观下线和客观下线:

1、主观下线状态:当一个sentinel认为一个redis服务连接不上的时候,会给这个服务打个标记为下线状态。

2、客观下线状态:当多个sentinel认为一个redids连接不上的时候,则认为这个redis服务确实下线了。这里的多个sentinel的个数可以在配置文件中设置。一般集群中一半的从节点都认为主机下线了,就进行主机选举机制,选出新的主机节点

sentinel配置

  • sentinel monitor mymaster 192.168.33.130 6379 2     #最后一个参数视情况决定 ,一般为从节点数量的一半;最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数
  • 启动sentinel    redis-sentinel sentinel.conf

sentinel的一些命令

  • INFO   sentinel的基本状态信息
  • SENTINEL masters   列出所有被监视的主服务器,以及这些主服务器的当前状态
  • SENTINEL slaves <master name>  列出给定主服务器的所有从服务器,以及这些从服务器的当前状态
  • SENTINEL get-master-addr-by-name <master name>  返回给定名字的主服务器的 IP 地址和端口号
  • SENTINEL reset <pattern>  重置所有名字和给定模式 pattern 相匹配的主服务器。重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel
  • SENTINEL failover <master name>  当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移,但是它会给其他sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新

具体操作

  • 新建sentinel文件夹,在其下新建20190、20191、20192和scripts文件夹,在文件夹的名字也是其对应的端口名字,在端口名字文件夹下新建conf、data和logs文件夹
  • mkdir sentinel
  • mkdir -pv {20190,20191,20192}/{conf,data,logs}
  • 启动方式redis-server 20190/conf/sentinel.conf --sentinel
  • 或者redis-sentinel 20190/cong]f/sentinel.conf
  • 在sentinel文件夹下,此时此文件下存放的就是20190、20191和20192文件夹,使用命令cp 20190/conf/sentinel.conf 20191/conf完成conf文件的拷贝,使用命令sed -i "s/20190/20191/g" 20191/conf/sentinel.conf完成将20190替换为20191的文本替换,完成即可,别的不需要动,具体内容如下
#20190
#指定端口号
port 20190
#指定后台运行
daemonize yes
#指定内网地址
bind 192.168.13.50
#指定数据文件夹
dir "/home/bfxy/servers/sentinel/20190/data"
#指定日志问价夹
logfile "/home/bfxy/servers/sentinel/20190/logs/sentinel.log"#指定master的连接名字是mymaster,连接的地址和端口号,2代表如果两个从节点认为主节点失效了,就进行master的选举
sentinel monitor mymaster 192.168.13.50 10191 2
#设置超时时间20秒
sentinel failover-timeout mymaster 20000
#指定脚本文件
sentinel notification-script mymaster /home/bfxy/servers/sentinel/scripts/notify.sh
# Generated by CONFIG REWRITE
sentinel client-reconfig-script mymaster /home/bfxy/servers/sentinel/scripts/reconfig.sh
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 8
sentinel known-sentinel mymaster 192.168.13.50 20191 e3f1be1924eba40a3698be5d81433ce133289315
sentinel known-sentinel mymaster 192.168.13.50 20192 8d47dce1af43f144d7b868969740cefef7d0e034
sentinel current-epoch 8
  • 在src目录下,使用命令redis-sentinel /user/local/redis-4.0.14/sentinel/20190/conf/sentinel.conf启动服务,20191和20192也是这样操作
  • 在src目录下,使用命令redis-cli  -h 192.168.133.130 -p 20190,使用客户端连接到服务器  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csdn 到底怎么了?不准转载?

我转载了20多文章&#xff0c;很多人阅读过&#xff0c;但是今天看到阅读量是0&#xff0c; csdn 到底怎么了&#xff1f; 对用户这样&#xff1f;请大家看看是不是这样&#xff1f;

python3之后版本读取网页的内容

import urllib.request url "http://helloworldbook2.com/data/message.txt" #直接通过url来获取网页数据 print(第一种) response urllib.request.urlopen(url) code response.getcode() html response.read() mystr html.decode("utf8") response.c…

三十功名尘与土——资深程序员生涯自白

摘要&#xff1a;作者Codist&#xff08;网名&#xff09;在程序员岗位上工作了三十多年&#xff0c;在这期间他悟出了一些真理&#xff0c;比如&#xff0c;成功来自对失败的总结学习&#xff1b;条条大路通罗马&#xff0c;罗马并不在乎你用什么方式到达。你在生活中积累了哪…

linux/unix核心设计思想

1&#xff09; 程序应该小而专一&#xff0c;程序应该尽量的小&#xff0c;且只专注于一件事上&#xff0c;不要开发那些看起来有用但是90%的情况都用不到的特性&#xff1b; 2&#xff09; 程序不只要考虑性能&#xff0c; 程序的可移植性更重要&#xff0c;shell和perl&…

操作系统环境变量

在 Java中&#xff0c;许多类都是 Iterable &#xff0c;主要包括所有的 Collection 类&#xff08;但不包括各种 Maps &#xff09;。 例如&#xff0c;下面的代码可以显示所有的操作系统环境变量&#xff1a; // collections/EnvironmentVariables.java // {VisuallyInspect…

用Unix的设计思想来应对多变的需求

摘要&#xff1a;无论是Unix设计&#xff0c;还是面向对象设计&#xff0c;还是别的什么如SOA&#xff0c;ECB&#xff0c;消息&#xff0c;事件&#xff0c;MVC&#xff0c;网络七层模型&#xff0c;数据库设计&#xff0c;等等&#xff0c;他们都在干三件事——解耦&#xff…

学习较底层编程:动手写一个C语言编译器

动手编写一个编译器&#xff0c;学习一下较为底层的编程方式&#xff0c;是一种学习计算机到底是如何工作的非常有效方法。 编译器通常被看作是十分复杂的工程。事实上&#xff0c;编写一个产品级的编译器也确实是一个庞大的任务。但是写一个小巧可用的编译器却不是这么困难。…

Arrays.deepToString() 方法同时适用于基元数组和对象数组

Arrays.deepToString() 方法同时适用于基元数组和对象数组&#xff1a; import java.util.*;public class MultiDimWrapperArray {public static void main(String[] args) {Integer[][] a1 { // Autoboxing{ 1, 2, 3, },{ 4, 5, 6, },};Double[][][] a2 { // Autoboxing{ {…

高效程序员的7个共同特征

要想成为高效的程序员&#xff0c;你需要具备一定的综合素质才能够让你用你所掌握的技能、经验和知识编写出有效的代码。有一些开发人员在技术方面具备一定的技巧&#xff0c;但他们永远无法成为高效的程序员&#xff0c;就是因为他们缺乏所需的其它几项特质。本文将给出成为一…

java.util.Array中的方法

概述 asList(): 获取任何序列或数组&#xff0c;并将其转换为一个 列表集合 &#xff08;集合章节介绍了此方法&#xff09;。 copyOf()&#xff1a;以新的长度创建现有数组的新副本。 copyOfRange()&#xff1a;创建现有数组的一部分的新副本。 equals()&#xff1a;比较两…

有关编程的12个猜想

摘要&#xff1a;编程世界的将来如何目前仍难预料&#xff0c;但可以肯定的一点是技术一直在加速发展。本文搜罗出12个独特的编程视角猜想&#xff0c;一起来看看有哪些猜想在不久的将来就能变为现实。 编程世界的将来如何目前仍难预料&#xff0c;但可以肯定的一点是技术一直…

面试中如何剔除“鱼目混珠”程序员?

公司招聘面试事宜是一个耗时耗钱的项目&#xff0c;从挑选简历开始&#xff0c;还要花更多的时间面试候选人。有的时候这些人才机构会向你保证这些人都是Java天才、SQL专家、堆栈开发者等等&#xff0c;但实际上真实情况远不及你想想的。对于一个公司来说&#xff0c;执行招聘面…

InputStream 类型

输入流类型 I/O-1 类功能构造器参数如何使用ByteArrayInputStream允许将内存的缓冲区当做 InputStream 使用缓冲区&#xff0c;字节将从中取出作为一种数据源&#xff1a;将其与 FilterInputStream 对象相连以提供有用接口StringBufferInputStream将 String 转换成 InputStr…

java容器相关问题

同步类容器 1&#xff0c;这些复合操作在多线程并发地修改容器时&#xff0c;可能会表现出意外的行为&#xff0c;最经典的便是ConcurrentModificationException&#xff0c;原因是当容器迭代的过程中&#xff0c;被并发的修改了内容&#xff0c;这是由于早期迭代器设计的时候…

趣文:如果编程语言是车

C语言是全能手&#xff0c;小巧&#xff0c;强大&#xff0c;所向披靡&#xff0c;可靠&#xff0c;任何事情都能对付。 C是新的C&#xff0c;双倍的能力&#xff0c;双倍的尺寸&#xff0c;适应险恶的环境&#xff0c;但是你如果没练好就去驾驶&#xff0c;很可能会撞车。 C#是…

Java 线程安全

线程安全 线程安全概念&#xff1a;当多个线程访问某一个类&#xff08;对象或方法&#xff09;时&#xff0c;这个类始终都能表现出正确的行为&#xff0c;那么这个类&#xff08;对象或方法&#xff09;就是线程安全的。synchronized&#xff1a;可以在任意对象及方法上加锁…

开发者应该了解的API技术清单!

摘要&#xff1a;有人说&#xff0c;有API的地方就有App&#xff0c;借助这些API开发者轻松构建出一款应用&#xff0c;极大地提高开发效率和开发质量。文中整理了一份API服务清单&#xff0c;内容涵盖&#xff1a;监控/调试、 CDN 、数据库、仪表盘、支付、通信等方面&#xf…

提高程序员职场价值的10大技巧

如果你已经是个很牛叉的程序员&#xff0c;但是依然觉得觉得还不够的话&#xff0c;欢迎阅读此文。本文旨在帮助各位更上一层楼。 你是不是觉得自己已经掌握了所有的编程技巧&#xff1f;别太自以为是了&#xff01; 会写代码的确很重要&#xff0c;但是要拿到更好薪水&#…

google python的风格规范

点击链接&#xff0c;查看内容

IT人应当知道的10个行业小内幕

如果你打算从事IT行业或刚进入这个行业&#xff0c;也许本文下面的小内幕会吓到你&#xff0c;因为这些事平常都不会公开讨论的。如果你是IT资深人士&#xff0c;或许你已经遇到其中的大部分了。如果你愿意&#xff0c;请一起来参与讨论吧。 这些内幕大多数是针对网络管理员、…