监控工具 sentinel

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:
复制代码
当master宕机了要把slave1变为master,并把slave2指向slave1。

运行时更改master-slave,config set/get,修改一台slave(设为A)为new master 
1)命令该服务不做其他redis服务的slave,命令: slaveof no one 
2)修改其readonly为yes,其他的slave再指向new master A
1)命令该服务为new master A的slave,命令格式 slaveof IP port


6379:>shutdown
6378,6377>info replication
"# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:down

6378:0>slaveof no one    //不在是从服务器
"OK"

6378:0>info replication    //现在已经是主服务器了,0个从
"# Replication
role:master
connected_slaves:0

6378:0>config get slave-read-only     //不能是readonly的
1) "slave-read-only"
2) "yes"
6378:0>config set slave-read-only no    
"OK"
6378:0>config get slave-read-only
1) "slave-read-only"
2) "no"

6377:0>slaveof 127.0.0.1 6378
"OK"

//原来6377,6378指向6379,现在6379宕机6378变为master6377变为6378的slave
6379:0>info replication
"# Replication
role:master
connected_slaves:0

6378:0>info replication
"# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6377,state=online,offset=408,lag=0
6377:0>info replication
"# Replication
role:slave
master_host:127.0.0.1
master_port:6378
复制代码

 

复制代码
监控工具 sentinel(就是刚才手工的操作)
sentinel  monitor  mymaster  127.0.0.1    6379    2         //2个sentinel监控到失效了
sentinel  auth-pass  mymaster  012_345^678-90  
##master被当前sentinel实例认定为“失效”的间隔时间  
##如果当前sentinel与master直接的通讯中,在指定时间内没有响应或者响应错误代码,那么当前sentinel就认为master失效(SDOWN,“主观”失效)  
##<mastername> <millseconds>  默认为30秒  
sentinel down-after-milliseconds mymaster  30000     //30000毫秒,30秒
  
##当前sentinel实例是否允许实施“failover”(故障转移,把不把slave变为master)  
##no表示当前sentinel为“观察者”(只参与"投票".不参与实施failover),(一般是多台sentinel监控一台master,只有一台sentinel可以修改slave为master,多台sentlnel不能一起改。有2台发现宕机了就宕机了),##全局中至少有一个为yes只能一个sentinel来修改。
sentinel can-failover mymaster  yes       //
##sentinel notification-script mymaster /var/redis/notify.sh  
复制代码

复制代码
Sentinel不断与master通信,获取master的slave信息,监听master与slave的状态
如果某slave失效,直接通知master去除该slave,如果master失效,,是按照slave优先级(可配置), 选取1个slave做 new master,把其他slave--> new master

疑问: sentinel与master通信,如果某次因为master IO操作频繁,导致超时,
此时,认为master失效,很武断.解决: sentnel允许多个实例看守1个master, 当N台(N可设置)sentinel都认为master失效,才正式失效.

Sentinel.conf 选项配置:
port 26379                   # 端口
sentinel monitor mymaster 127.0.0.1 6379 2 , //给主机起的名字(不重即可), 当2个sentinel实例都认为master失效时,正式失效
sentinel down-after-milliseconds mymaster 30000   #多少毫秒后连接不到master认为断开
sentinel can-failover mymaster yes        #是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改./
sentinel parallel-syncs mymaster 1 ,   #一次性修改几个slave指向新的new master.1表示是一台一台的来,防止新的masterio过高而宕机
sentinel failover-timeout mymaster 900000    //15分钟之内没有完成刚才的所有操作则表示操作失败,然后发送短信什么的。
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh ,# 在重新配置new master,new slave过程,可以触发的脚本
Redis-server ./Sentinel.conf --sentinel     //启动
复制代码
slave-priority 10   //多个slave的时候可以选择哪个优先作为master,越小越靠前。
//同一个redis实例里面复制多个配置文件,就可以开启多个redis实例和sentinel。

80是主,7778,79是从。80宕机后79是主,并且是改了配置文件,也就是说重启后79仍然是主(通过info replication查看主从信息)。如果79 的数据比80 少,那么79做主后80的数据跟79同步,那么79的数据也会丢失。Sentinel 的配置文件也改了。  因为配置文件改了,所以只启动一个从服务器时他仍然是主服务器的slave,并且等着主服务器起来,只有启动了sentinel看见主服务器没有起来,会修改配置文件把当前的从服务器修改为master.



 
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12月前
|
Prometheus 监控 Cloud Native
服务器监控工具:选择与应用
服务器监控工具:选择与应用
78 0
|
4月前
|
监控 Java 时序数据库
性能监控之Telegraf+InfluxDB+Grafana实现JMX实时监控
【6月更文挑战15天】性能监控之Telegraf+InfluxDB+Grafana实现JMX实时监控
142 6
性能监控之Telegraf+InfluxDB+Grafana实现JMX实时监控
|
11月前
|
数据采集 Prometheus 监控
监控利器之Prometheus基于Blackbox_exporter监控服务的端口
监控利器之Prometheus基于Blackbox_exporter监控服务的端口
405 0
|
4月前
|
Prometheus 监控 Cloud Native
搭建服务端性能监控系统 Prometheus 详细指南
搭建Prometheus监控系统,涉及Ubuntu上Docker的安装,通过`docker run`命令启动Prometheus容器,并挂载配置文件。配置文件默认示例可以从GitHub获取,调整`scrape_interval`和`targets`以监控Prometheus自身及Node Exporter(提供系统指标)。Node Exporter以Docker容器形式运行在9100端口。完成配置后,重启Prometheus容器,通过Web界面查看监控数据。后续将介绍结合Grafana进行可视化。
93 0
|
5月前
|
数据采集 运维 监控
添加监控
添加监控 “【5月更文挑战第3天】”
41 8
|
5月前
|
分布式计算 资源调度 Java
YarnJMX监控
YarnJMX监控
191 2
|
5月前
|
存储 监控 网络协议
Zookeeper监控之四字监控
Zookeeper监控之四字监控
195 0
|
11月前
|
缓存 监控 NoSQL
Redis性能监控指标汇总
Redis性能监控指标汇总
182 0
|
监控 NoSQL Redis
redis集群部署,结合sentinel监控
redis集群部署,结合sentinel监控
167 0
|
运维 NoSQL Java
Sentinel集群限流探索
最近看了下关于分布式限流的部分,看到Sentinel的分布式限流,也就是集群限流的部分,想搭个环境看看,结果发现网上关于这方面的内容基本可以说没有,你甚至很难跑起来他的demo,就算能跑起来,估计也得自己研究半天,麻烦的要死。 我猜测很重要的原因可能就是Sentinel关于这块做的并不完善,而且从官方的Issue中能看出来,其实官方对于这块后续并没有计划去做的更好。 那么废话不多说,在此之前,肯定要先说下关于Sentinel集群限流方面的原理,没有原理一切都是空中楼阁。
Sentinel集群限流探索