sentinel功能
redis的sentinel系統用于管理多個redis服務器,該系統主要執行三個任務:監控、提醒、自動故障轉移。
1、監控(Monitoring): Redis Sentinel實時監控主服務器和從服務器運行狀態,并且實現自動切換
2、提醒(Notification):當被監控的某個 Redis 服務器出現問題時, Redis Sentinel 可以向系統管理員發送通知, 也可以通過 API 向其他程序發送通知。這個需要我們指定相關的代碼,比如發郵件、事務的處理等等
3、自動故障轉移(Automatic failover): 當一個主服務器不能正常工作時,Redis Sentinel 可以將一個從服務器升級為主服務器, 并對其他從服務器進行配置,讓它們使用新的主服務器。當應用程序連接Redis 服務器時, Redis Sentinel會告之新的主服務器地址和端口
注意:在使用sentinel監控主從節點的時候,從節點需要是使用動態方式配置的,如果直接修改配置文件,后期sentinel實現故障轉移的時候會出問題
主觀下線和客觀下線:
1、主觀下線狀態:當一個sentinel認為一個redis服務連接不上的時候,會給這個服務打個標記為下線狀態。
2、客觀下線狀態:當多個sentinel認為一個redids連接不上的時候,則認為這個redis服務確實下線了。這里的多個sentinel的個數可以在配置文件中設置。一般集群中一半的從節點都認為主機下線了,就進行主機選舉機制,選出新的主機節點
sentinel配置
- sentinel?monitor?mymaster?192.168.33.130?6379?2?????#最后一個參數視情況決定 ,一般為從節點數量的一半;最后一個參數為需要判定客觀下線所需的主觀下線sentinel個數,這個參數不可以大于sentinel個數
- 啟動sentinel? ??redis-sentinel?sentinel.conf
sentinel的一些命令
- INFO? ?sentinel的基本狀態信息
- SENTINEL?masters? ?列出所有被監視的主服務器,以及這些主服務器的當前狀態
- SENTINEL?slaves?<master?name>??列出給定主服務器的所有從服務器,以及這些從服務器的當前狀態
- SENTINEL?get-master-addr-by-name?<master?name>??返回給定名字的主服務器的 IP 地址和端口號
- SENTINEL?reset?<pattern>??重置所有名字和給定模式 pattern 相匹配的主服務器。重置操作清除主服務器目前的所有狀態, 包括正在執行中的故障轉移, 并移除目前已經發現和關聯的, 主服務器的所有從服務器和 Sentinel
- SENTINEL?failover?<master?name>??當主服務器失效時, 在不詢問其他 Sentinel 意見的情況下, 強制開始一次自動故障遷移,但是它會給其他sentinel發送一個最新的配置,其他sentinel會根據這個配置進行更新
具體操作
- 新建sentinel文件夾,在其下新建20190、20191、20192和scripts文件夾,在文件夾的名字也是其對應的端口名字,在端口名字文件夾下新建conf、data和logs文件夾
- mkdir sentinel
- mkdir -pv {20190,20191,20192}/{conf,data,logs}
- 啟動方式redis-server 20190/conf/sentinel.conf --sentinel
- 或者redis-sentinel 20190/cong]f/sentinel.conf
- 在sentinel文件夾下,此時此文件下存放的就是20190、20191和20192文件夾,使用命令cp 20190/conf/sentinel.conf 20191/conf完成conf文件的拷貝,使用命令sed -i "s/20190/20191/g" 20191/conf/sentinel.conf完成將20190替換為20191的文本替換,完成即可,別的不需要動,具體內容如下
#20190
#指定端口號
port 20190
#指定后臺運行
daemonize yes
#指定內網地址
bind 192.168.13.50
#指定數據文件夾
dir "/home/bfxy/servers/sentinel/20190/data"
#指定日志問價夾
logfile "/home/bfxy/servers/sentinel/20190/logs/sentinel.log"#指定master的連接名字是mymaster,連接的地址和端口號,2代表如果兩個從節點認為主節點失效了,就進行master的選舉
sentinel monitor mymaster 192.168.13.50 10191 2
#設置超時時間20秒
sentinel failover-timeout mymaster 20000
#指定腳本文件
sentinel notification-script mymaster /home/bfxy/servers/sentinel/scripts/notify.sh
# Generated by CONFIG REWRITE
sentinel client-reconfig-script mymaster /home/bfxy/servers/sentinel/scripts/reconfig.sh
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 8
sentinel known-sentinel mymaster 192.168.13.50 20191 e3f1be1924eba40a3698be5d81433ce133289315
sentinel known-sentinel mymaster 192.168.13.50 20192 8d47dce1af43f144d7b868969740cefef7d0e034
sentinel current-epoch 8
- 在src目錄下,使用命令redis-sentinel /user/local/redis-4.0.14/sentinel/20190/conf/sentinel.conf啟動服務,20191和20192也是這樣操作
- 在src目錄下,使用命令redis-cli? -h 192.168.133.130 -p 20190,使用客戶端連接到服務器??
?