哨兵模式(自动选择主机)
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
-
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
-
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。


1.配置哨兵配置文件 sentinel.conf
sentinel monitor 被监控的名称 host port 1 (数字1代表主机挂了,从机投票来选择主机,票数最多的成为主机)
#sentinel monitor myredis 127.0.0.1 6379 1
2.启动哨兵[root@linuxvm bin]# redis-sentinel kconfig/sentinel.conf
[root@linuxvm bin]# redis-sentinel kconfig/sentinel.conf
17822:X 08 Apr 2021 15:23:09.304 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
17822:X 08 Apr 2021 15:23:09.305 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=17822, just started
17822:X 08 Apr 2021 15:23:09.305 # Configuration loaded
17822:X 08 Apr 2021 15:23:09.306 * Increased maximum number of open files to 10032 (it was originally set to 1024).
17822:X 08 Apr 2021 15:23:09.306 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.1 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 17822
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
17822:X 08 Apr 2021 15:23:09.307 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
17822:X 08 Apr 2021 15:23:09.316 # Sentinel ID is 01dde377ea995a59b45ae79d2c7d5517ecabebca
17822:X 08 Apr 2021 15:23:09.316 # +monitor master myredis 127.0.0.1 6379 quorum 1
17822:X 08 Apr 2021 15:23:09.317 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:23:09.325 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
关掉主机
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> SHUTDOWN
not connected> exit
[root@linuxvm bin]#
如果主机点断开,就会从从机中随机选择一个服务器
17822:X 08 Apr 2021 15:24:47.650 # +sdown master myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:47.650 # +odown master myredis 127.0.0.1 6379 #quorum 1/1
17822:X 08 Apr 2021 15:24:47.650 # +new-epoch 1
17822:X 08 Apr 2021 15:24:47.650 # +try-failover master myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:47.668 # +vote-for-leader 01dde377ea995a59b45ae79d2c7d5517ecabebca 1
17822:X 08 Apr 2021 15:24:47.668 # +elected-leader master myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:47.668 # +failover-state-select-slave master myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:47.721 # +selected-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:47.721 * +failover-state-send-slaveof-noone slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:47.797 * +failover-state-wait-promotion slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:48.743 # +promoted-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:48.743 # +failover-state-reconf-slaves master myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:48.789 * +slave-reconf-sent slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:49.783 * +slave-reconf-inprog slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:49.783 * +slave-reconf-done slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:49.845 # +failover-end master myredis 127.0.0.1 6379
17822:X 08 Apr 2021 15:24:49.845 # +switch-master myredis 127.0.0.1 6379 127.0.0.1 6380
17822:X 08 Apr 2021 15:24:49.845 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6380
17822:X 08 Apr 2021 15:24:49.845 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6380
17822:X 08 Apr 2021 15:25:19.863 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6380
如果主机恢复,只能归并到新的主机下 当做从机
哨兵模式:
优点:
1.哨兵集群基于主从复制模式
2.主从可以切换,故障可以转移,系统的可用性更好
3.哨兵模式就是主从模式的升级,手动到自动
缺点:
1.redis 不好在线扩容集群容量一旦达到上线 在线扩容十分麻烦
2.实现哨兵模式的配置其实很麻烦,里面有很多选择