首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,082 阅读
2
类的加载
741 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
584 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
388
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
页面
统计
关于
搜索到
1
篇与
的结果
2021-01-03
Redis哨兵模式
哨兵模式Redis 2.8引入,Rentinel哨兵模式哨兵模式是一种特殊的模式,它是一个独立的进程,其原理是:哨兵通过发送命令,等待redis服务器响应,从而监控运行的多个redis实例。哨兵模式的作用:通过发送命令,让redis服务器返回监控的运行状态(包括主从所有节点)当哨兵检测到master宕机,会在自动将slave切换为master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让他们切换主服务器节点一般情况下使用多个哨兵进行监控,且哨兵之间互相监督:当master节点出现问题时,哨兵01先检测到问题,系统并不会马上进行failover,仅仅是哨兵01主观的认为主节点不可用,这个过程称为主观下线。当其他哨兵也检测到主节点服务不可用时,并且数量达到了一定的值,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover(故障转移)操作。当切换完成之后,就会通过发布订阅模式让各个哨兵把自己监控的节点进行master主节点切换(从故障节点切换为投票后票数最高的节点),这个过程称为客观下线。测试1、redis配置文件目录下新建sentinel.conf#sentinel monitor 被监控名 主机地址 端口 1 sentinel monitor myredis 127.0.0.1 6380 1 #master节点密码(必须配置) sentinel auth-pass myredis 123456 后面的数字1,代表当主机出现问题时,slave进行投票决定让谁成为主机,票数最多的成为主节点2、启动哨兵模式[root@suaxi bin]# redis-sentinel sconf/sentinel.conf 19524:X 03 Jan 2021 21:33:38.148 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 19524:X 03 Jan 2021 21:33:38.148 # Redis version=6.0.9, bits=64, commit=00000000, modified=0, pid=1 started 19524:X 03 Jan 2021 21:33:38.148 # Configuration loaded _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 6.0.9 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 26379 | `-._ `._ / _.-' | PID: 19524 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 19524:X 03 Jan 2021 21:33:38.149 # Sentinel ID is dce67565b60ad27529a7bbcfe2457faa3a306c4e 19524:X 03 Jan 2021 21:33:38.149 # +monitor master myredis 127.0.0.1 6379 quorum 1 19524:X 03 Jan 2021 21:33:38.151 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6 19524:X 03 Jan 2021 21:33:38.155 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6 19524:X 03 Jan 2021 21:34:20.556 # +sdown master myredis 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:20.556 # +odown master myredis 127.0.0.1 6379 #quorum 1/1 19524:X 03 Jan 2021 21:34:20.556 # +new-epoch 3 19524:X 03 Jan 2021 21:34:20.556 # +try-failover master myredis 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:20.560 # +vote-for-leader dce67565b60ad27529a7bbcfe2457faa3a306c4e 3 19524:X 03 Jan 2021 21:34:20.560 # +elected-leader master myredis 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:20.560 # +failover-state-select-slave master myredis 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:20.622 # +selected-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 1279 19524:X 03 Jan 2021 21:34:20.622 * +failover-state-send-slaveof-noone slave 127.0.0.1:6380 127.0.0.yredis 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:20.674 * +failover-state-wait-promotion slave 127.0.0.1:6380 127.0.0.1 63is 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:21.037 # +promoted-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 1279 19524:X 03 Jan 2021 21:34:21.037 # +failover-state-reconf-slaves master myredis 127.0.0.1 6379 19524:X 03 Jan 2021 21:34:21.104 * +slave-reconf-sent slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 6379 19524:X 03 Jan 2021 21:34:22.060 * +slave-reconf-inprog slave 127.0.0.1:6381 127.0.0.1 6381 @ myred.1 6379 如果之前端口为6379的主节点重新恢复后,不能再成为主节点,哨兵模式会将其分配为slave从节点优缺点优点:1、哨兵模式集群基于主从复制模式2、主从切换,系统可用性更好缺点:1、哨兵集群容量很大,在线扩容不方便2、哨兵模式配置繁杂sentinel.conf详细配置# Example sentinel.conf # 运行端口默认26379 port 26379 # 工作目录 dir /tmp # 监控的redis主节点 # master-name 可自定义命名的主节点名字,只能由字母A-Z、数字0-9、.-_等字符组成 # quorum 配置多少个哨兵节点同意认为master节点失联,这时客观认为主节点已失联(客观下线) # sentinel monitor <master-name> <ip> <redis-port> <quorum> sentinel monitor myredis 127.0.0.1 6379 1 # 设置哨兵连接主节点的密码 # sentinel auth-pass <master-name> <password> sentinel auth-pass myredis 123456 # 指定多少毫秒后,主节点没有应答哨兵监控,哨兵主观上认为主节点出现问题,默认为30秒 # sentinel down-after-milliseconds <master-name> <milliseconds> sentinel down-after-milliseconds myredis 30000 # 指定在发生failover[故障转移]主备切换时,有多少个slave节点同时对新的master节点进行同步 # 数字越小,完成failover的时间越长,数字越大,越多的slave节点会因replication而不可用 # 可将这个值设为1,来保证每次只有一个slave节点处于不能处理命令请求的状态 # sentinel parallel-syncs <master-name> <numslaves> sentinel parallel-syncs myredis 1 # 故障转移超时时间 failover-timeout,可用于以下几个方面 # 1.同一个sentinel对同一个master两次failover之间的时间间隔 # 2.当一个slave从一个出现问题的master那里同步数据开始计算时间,直到slave被纠正为向正确的master同步数据时 # 3.当想要取消一个正在进行failover所需要的时间 # 4.当进行failover时,配置所有slave指向新的master所需的最大时间(即使过了这个时间,slave依然会被配置到正确的master,此时不遵循parallel-syncs规则) # 默认为三分钟,单位毫秒 # sentinel failover-timeout <master-name> <milliseconds> sentinel failover-timeout myredis 180000 # SCRIPTS EXECUTION # 配置当某一事件发生时所需要执行的脚本,以此来通知管理员 # 1.若脚本执行后返回1,那么该脚本稍后会被再次执行,默认次数为10 # 2.若脚本执行后返回2,或者比2更高的一个返回值,脚本将不会被重复执行 # 3.如果脚本在执行过程中收到系统中断信号而被终止,则与返回值为1时的操作一致 # 一个脚本的最大执行时间为60s,将会被SIGKILL信号终止,之后重新执行 # 通知型脚本:当sentinel有任何警告级别的事件发生时(比如说redis实例的主观失效和客观失效等等),将会去调用这个脚本,这时这个脚本应该通过邮件,SMS等方式去通知系统管理员关于系统不正常运行的信息。调用该脚本时,将传给脚本两个参数,一个是事件的类型,一个是事件的描述。如果sentinel.conf配置文件中配置了这个脚本路径,那么必须保证这个脚本存在于这个路径,并且是可执行的,否则sentinel无法正常启动成功。 # sentinel notification-script <master-name> <script-path> sentinel notification-script myredis /var/redis/notify.sh # 客户端重新配置主节点参数脚本 # 当一个master由于failover而发生改变时,这个脚本将会被调用,通知相关的客户端关于master地址已经发生改变的信息。 # 以下参数将会在调用脚本时传给脚本: # <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port> # 目前<state>总是“failover”, # <role>是“leader”或者“observer”中的一个。 # 参数 from-ip, from-port, to-ip, to-port是用来和旧的master和新的master(即旧的slave)通信的 # 这个脚本应该是通用的,能被多次调用,不是针对性的。 # sentinel client-reconfig-script <master-name> <script-path> sentinel client-reconfig-script myredis /var/redis/reconfig.sh
2021年01月03日
145 阅读
0 评论
0 点赞