用sentinel作Redis集羣,總結下自己遇到的坑,以及探討下改如何設置哨兵模式。

先寫總結

1.sentinel 的配置文件要配置master的密碼:sentinel auth-pass mymaster phFUND_linux_redis。

2.爲了主從能自由切換請給主從都配置好密碼,而且要設置相同的密碼(完成切換後,因爲從沒有配置masterauth,導致重啓後連接不上主):

masterauth "phFUND_linux_redis"

requirepass "phFUND_linux_redis"

3.強烈建議各位在部署時,使用該版本redis自帶的配置文件進行配置,且一定要保證配置項的順序和原版保持一致。針對自己的需要修改配置項。如果不一致,可能會報錯。

4.會看sentinel的日誌。:

 +try-failover master mymaster 172.**.**.117 6379(開始嘗試進行failover)
 +vote-for-leader e2a313dd66f8e8df829628d4580d77f840ebb068 4(sentinel配置文件中的myid,確認leader sentinel)
 +elected-leader master mymaster 172.**.**.117 6379(已存在的master節點)
 +failover-state-select-slave master mymaster 172.**.**.117 6379(分析master的slave狀態)
 +selected-slave slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(已選出一個原master的slave)
 +failover-state-send-slaveof-noone slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(將新的slave進行主從切換)
 +failover-state-wait-promotion slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(等待slave升級中)
 +promoted-slave slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(升級完成)
 +failover-state-reconf-slaves master mymaster 172.**.**.117 6379(重寫原master的配置文件)
 +slave-reconf-sent slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 6379(重寫所有slave的配置文件)
 +slave-reconf-inprog slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 6379(重寫所有slave的配置文件)
 +slave-reconf-done slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 6379(重寫所有slave的配置文件)
 +slave-reconf-sent slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 6379(重寫所有slave的配置文件)
 +slave-reconf-inprog slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 6379(重寫所有slave的配置文件)
 +slave-reconf-done slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 6379(重寫所有slave的配置文件)
 +failover-end master mymaster 172.**.**.117 6379(failover結束)
 +switch-master mymaster 172.**.**.117 6379 172.**.**.117 7379(slave節點已經升級爲master)
 +slave slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 7379(爲新的master節點確認slave節點)
 +slave slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 7379(爲新的master節點確認slave節點)
 +slave slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(爲新的master節點確認slave節點)
 +sdown slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(原master節點變爲slave,且主觀下線)
 -sdown slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(重啓了,恢復狀態)
 +convert-to-slave slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(已轉換爲新master 的slave)

5.sentienl常用命令:1)進入sentinel : redis-cli -h <IP> -p <port> 。2)查看集羣所有master的狀態:sentinel masters 。 3)查看某個master的所有slave:sentinel slaves <mastername>

6.sentinel的配置:

port 26379
protected-mode no(允許所有地址的訪問,如果是yes則只允許本機,默認是yes。文檔顯示設置了bind和密碼的話該設置不會生效)
logfile "/home/session/redis/logs/redis_26379.log"(日誌地址,如果配置了該地址,則不會打印堆棧。)

sentinel myid e2a313dd66f8e8df829628d4580d77f840ebb068(sentinel的唯一ID)
sentinel monitor mymaster 172.18.50.117 7379 1

sentinel down-after-milliseconds mymaster 30000(多少毫秒判定master宕機)                                                                              sentinel parallel-syncs mymaster 1(同步時允許最多幾臺slave同步master,數字越小同步時間越久,在同步的過程中不能提供服務,所以配置大了也不好,依情況而定)

daemonize yes(守護線程模式)

dir "/tmp"

# Generated by CONFIG REWRITE
maxclients 4064(自動生成,也可以自己配置)
sentinel failover-timeout mymaster 150000(多少毫米未切換完成則判定失敗)
sentinel auth-pass mymaster phFUND_linux_redis(密碼要配置)
sentinel config-epoch mymaster 4(自動生成)
sentinel leader-epoch mymaster 4(自動生成)
sentinel known-slave mymaster 172.18.50.117 6379(自動生成)
sentinel known-slave mymaster 172.18.50.117 7381(自動生成)
sentinel known-slave mymaster 172.18.50.117 7380(自動生成)
sentinel current-epoch 4(自動生成)

 

項目和環境介紹

因爲公司的測試環境的Redis老是掛,導致系統啓動報錯。一直沒人管,所幸我自己看看。

問題:一臺master掛掉,無法進行故障轉移,不能選舉從。

先上個測試環境的架構圖: 

分片規則是在應用層實現的,比較簡單,直接用hash值對接連數取模計算節點,沒有用一致性hash,擴展性很差。

而且,一個哨兵監控了兩個master,實在不明白如果請求sentinel它到底會把請求發給哪個master。

即便可以,也不建議這樣配置,一個哨兵掛了,會導致兩個主從集羣的監控都出問題。

建議用這個作者的設置:https://blog.csdn.net/men_wen/article/details/72724406

 

因爲測試環境只有兩臺服務器,一般哨兵不太可能會掛,所以我改成了如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章