一、概念
Redis Sentinel为Redis提供高可用性。主要有以下功能
监控,Sentinel会不断检查主节点和从节点是否按预期工作。
通知。Sentinel可以通过API通知系统管理员,一个受监控的Redis实例出现问题。
自动故障转移。如果主服务器未按预期工作,Sentinel可以启动故障转移过程,其中从节点升级为主节点,其他服务器重新配置向新主同步数据
Sentinel本身设计为在多个Sentinel进程协同工作的配置中运行。让多个Sentinel进程协作的优势如下:
当多个Sentinels同意给定主设备不再可用时,将执行故障检测。这降低了误报的可能性。
即使并非所有Sentinel进程都正常工作,哨兵也能正常工作,从而使系统能够抵御故障。毕竟,拥有故障转移系统并不是一件好事,而故障转移系统本身就是一个单一的故障点。
二、配置前第几个说明
1、Sentinel会自动发现从节点,也就是我们只需要配置好监控的主节点,Sentinel会自己找到主节点的从节点,已经同样在监控主节点的其他Sentinel
2、配置Sentinel节点个数一般大于3 且是奇数,如果只有2个,那么发生网络分区的时候只需要1票就可以认为节点down了,这个就很不合理了。
二、实现
1、配置
查看哨兵是否生效(登录哨兵所在cli):
redis-cli -p 26380
#sentinel master mymaster
127.0.0.1:26381> sentinel master mymaster
1) "name"
2) "mymaster" #标识名
3) "ip"
4) "127.0.0.1" #主节点ip
5) "port"
6) "6380" #端口
7) "runid"
8) "76bd28b96c8bb8c1ea9d8c5ceb62e4cd77265a7c"
9) "flags" #标识,这里表示是一个主节点
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "827"
19) "last-ping-reply"
20) "827"
21) "down-after-milliseconds"
22) "60000"
23) "info-refresh"
24) "1065"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "399885"
29) "config-epoch"
30) "0"
31) "num-slaves" #哨兵数量
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum" ##法定票数
36) "2"
37) "failover-timeout" #故障转移的超时时间
38) "180000"
39) "parallel-syncs" #支持多少个slave同时同步数据,值太大对主库有压力。太小的话整个集群同步时间慢
40) "1"
2、测试自动重新分配
1)连接主库,关闭服务
redis-cli -p 6380
#shutdown
2)连接哨兵查看
redis-cli -p 26381
1) "name"
2) "mymaster"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6382" #已自动切换6382为主服务器
3)登录6382查看
redis-cli -p 6382
127.0.0.1:6382> info replication
# Replication
role:master #已自动切换6382为主服务器
connected_slaves:1 #从服务器1个
slave0:ip=127.0.0.1,port=6381,state=online,offset=133493,lag=0
master_replid:36a566012f6cb1a42d69273ceebbb1187943477c
master_replid2:6a9a9ea6c3ee248c95b65e689841f3edcc0bc5fa
master_repl_offset:133493
second_repl_offset:111505
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:423
repl_backlog_histlen:133071
4)重启之前的主服务器后
再次查看,之前的主服务器自动变为从服务器
redis-cli -p 6382
127.0.0.1:6382> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=173563,lag=1
slave1:ip=127.0.0.1,port=6380,state=online,offset=173563,lag=1
master_replid:36a566012f6cb1a42d69273ceebbb1187943477c
master_replid2:6a9a9ea6c3ee248c95b65e689841f3edcc0bc5fa
master_repl_offset:173696
second_repl_offset:111505
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:423
repl_backlog_histlen:173274
参考:
https://blog.csdn.net/L835311324/article/details/83870657
本博客地址: wukong1688
本文原文地址:https://www.cnblogs.com/wukong1688/p/12325999.html
转载请著名出处!谢谢~~
原文地址:https://www.cnblogs.com/wukong1688/p/12325999.html