15.哨兵模式詳解


哨兵模式(自動選擇主機)

主從切換技術的方法是:當主服務器宕機后,需要手動把一台從服務器切換為主服務器,這就需要人工干預,費事費力,還會造成一段時間內服務不可用。這不是一種推薦的方式,更多時候,我們優先考慮哨兵模式。

  • 通過發送命令,讓Redis服務器返回監控其運行狀態,包括主服務器和從服務器。

  • 當哨兵監測到master宕機,會自動將slave切換成master,然后通過發布訂閱模式通知其他的從服務器,修改配置文件,讓它們切換主機。

哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的進程,作為進程,它會獨立運行。其原理是哨兵通過發送命令,等待Redis服務器響應,從而監控運行的多個Redis實例。

 

 

 

假設主服務器宕機,哨兵1先檢測到這個結果,系統並不會馬上進行failover過程,僅僅是哨兵1主觀的認為主服務器不可用,這個現象成為主觀下線。當后面的哨兵也檢測到主服務器不可用,並且數量達到一定值時,那么哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功后,就會通過發布訂閱模式,讓各個哨兵把自己監控的從服務器實現切換主機,這個過程稱為客觀下線。這樣對於客戶端而言,一切都是透明的。

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.實現哨兵模式的配置其實很麻煩,里面有很多選擇

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM