哨兵模式(自動選擇主機)
主從切換技術的方法是:當主服務器宕機后,需要手動把一台從服務器切換為主服務器,這就需要人工干預,費事費力,還會造成一段時間內服務不可用。這不是一種推薦的方式,更多時候,我們優先考慮哨兵模式。
-
通過發送命令,讓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.實現哨兵模式的配置其實很麻煩,里面有很多選擇