1、读取运行时态的配置信息
config get [参数]
2、运行时手动更改master-slave
(1)修改一台slave(设为A)为new master
命令该服务不做其他redis服务的slave
命令: slaveof no one
(2)修改其slave-read-only为 no
命令:config get slave-read-only
config set slave-read-only no
(3)其他的slave再指向new master A
命令该服务为new master A的slave
命令格式 slaveof IP port
3、原理
每个 Sentinel 以每秒钟一次的频率向它所知的 Master,Slave 以及其他 Sentinel 实例发送一个 PING 命令;
如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线;
如果一个 Master 被标记为主观下线,则正在监视这个 Master 的所有 Sentinel 要以每秒一次的频率确认 Master 的确进入了主观下线状态;
当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 Master 的确进入了主观下线状态,则 Master 会被标记为客观下线;
在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有 Master,Slave 发送 INFO 命令;
当 Master 被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次;
若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除;
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除
4、sentinel监控配置
sentinel monitor def_master 127.0.0.1 6379 2 #监视谁(数字2表示连续监控2次连不上认为“失效”)
sentinel auth-pass def_master 012_345^678-90 #master是否要密码
sentinel down-after-milliseconds def_master 30000 #master被当前sentinel实例认定为“失效”的间隔时间(默认为30秒 )
sentinel can-failover def_master yes #如果监测到master失效是否允许将slave改成master
注:通常有多个sentinel监测master,只允许一个具有监视和修改的作用,其他的只负责监视
sentinel parallel-syncs def_master 1 #当master宕机后,数字1 表示同时把一台slave指向新的master
注:def_master为自己定义的名字,什么名字都可以,只要保持一致就ok
5、启动sentinel
./redis-server /etc/sentinel.conf --sentinel
6、设置sentinel连接的优先级
在slave的config文件中slave-priority N 配置(数字越小越靠前,优先切换成master)
7、功能
监控——redis实例是否正常运行
通知——通知应用错误信息
主从切换——某个master死掉,选择一个slave升级维master,修改其他slave的slaveof关系,更新client连接
提供配置信息——client通过sentinel获取redis地址,并在主从切换时更新地址。
8、问题总结
最初sentinel切换一直不成功,一直没找到原因,一个偶然的尝试找到原因
sentinel monitor def_master 127.0.0.1 6379 2(配置文件的数字2并没有改为数字1,因为我只有一个哨兵监测master)
参考以下:
一、原理
每个 Sentinel 以每秒钟一次的频率向它所知的 Master,Slave 以及其他 Sentinel 实例发送一个 PING 命令;
如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds
选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线; 如果一个 Master 被标记为主观下线,则正在监视这个 Master
的所有 Sentinel 要以每秒一次的频率确认 Master 的确进入了主观下线状态; 当有足够数量的
Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 Master 的确进入了主观下线状态,则 Master
会被标记为客观下线; 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有 Master,Slave 发送
INFO 命令; 当 Master 被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave
发送 INFO 命令的频率会从 10 秒一次改为每秒一次; 若没有足够数量的 Sentinel 同意 Master 已经下线, Master
的客观下线状态就会被移除; 若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master
的主观下线状态就会被移除。
二、功能监控——redis实例是否正常运行 通知——通知应用错误信息
主从切换——某个master死掉,选择一个slave升级维master,修改其他slave的slaveof关系,更新client连接
提供配置信息——client通过sentinel获取redis地址,并在主从切换时更新地址。