Redis的哨兵模式Sentinel
sentinel功能
redis的sentinel系統(tǒng)用于管理多個(gè)redis服務(wù)器,該系統(tǒng)主要執(zhí)行三個(gè)任務(wù):監(jiān)控、提醒、自動(dòng)故障轉(zhuǎn)移。
1、監(jiān)控(Monitoring): Redis Sentinel實(shí)時(shí)監(jiān)控主服務(wù)器和從服務(wù)器運(yùn)行狀態(tài),并且實(shí)現(xiàn)自動(dòng)切換
2、提醒(Notification):當(dāng)被監(jiān)控的某個(gè) Redis 服務(wù)器出現(xiàn)問題時(shí), Redis Sentinel 可以向系統(tǒng)管理員發(fā)送通知, 也可以通過 API 向其他程序發(fā)送通知。這個(gè)需要我們指定相關(guān)的代碼,比如發(fā)郵件、事務(wù)的處理等等
3、自動(dòng)故障轉(zhuǎn)移(Automatic failover): 當(dāng)一個(gè)主服務(wù)器不能正常工作時(shí),Redis Sentinel 可以將一個(gè)從服務(wù)器升級(jí)為主服務(wù)器, 并對(duì)其他從服務(wù)器進(jìn)行配置,讓它們使用新的主服務(wù)器。當(dāng)應(yīng)用程序連接Redis 服務(wù)器時(shí), Redis Sentinel會(huì)告之新的主服務(wù)器地址和端口
注意:在使用sentinel監(jiān)控主從節(jié)點(diǎn)的時(shí)候,從節(jié)點(diǎn)需要是使用動(dòng)態(tài)方式配置的,如果直接修改配置文件,后期sentinel實(shí)現(xiàn)故障轉(zhuǎn)移的時(shí)候會(huì)出問題
主觀下線和客觀下線:
1、主觀下線狀態(tài):當(dāng)一個(gè)sentinel認(rèn)為一個(gè)redis服務(wù)連接不上的時(shí)候,會(huì)給這個(gè)服務(wù)打個(gè)標(biāo)記為下線狀態(tài)。
2、客觀下線狀態(tài):當(dāng)多個(gè)sentinel認(rèn)為一個(gè)redids連接不上的時(shí)候,則認(rèn)為這個(gè)redis服務(wù)確實(shí)下線了。這里的多個(gè)sentinel的個(gè)數(shù)可以在配置文件中設(shè)置。一般集群中一半的從節(jié)點(diǎn)都認(rèn)為主機(jī)下線了,就進(jìn)行主機(jī)選舉機(jī)制,選出新的主機(jī)節(jié)點(diǎn)
sentinel配置
- sentinel?monitor?mymaster?192.168.33.130?6379?2?????#最后一個(gè)參數(shù)視情況決定 ,一般為從節(jié)點(diǎn)數(shù)量的一半;最后一個(gè)參數(shù)為需要判定客觀下線所需的主觀下線sentinel個(gè)數(shù),這個(gè)參數(shù)不可以大于sentinel個(gè)數(shù)
- 啟動(dòng)sentinel? ??redis-sentinel?sentinel.conf
sentinel的一些命令
- INFO? ?sentinel的基本狀態(tài)信息
- SENTINEL?masters? ?列出所有被監(jiān)視的主服務(wù)器,以及這些主服務(wù)器的當(dāng)前狀態(tài)
- SENTINEL?slaves?<master?name>??列出給定主服務(wù)器的所有從服務(wù)器,以及這些從服務(wù)器的當(dāng)前狀態(tài)
- SENTINEL?get-master-addr-by-name?<master?name>??返回給定名字的主服務(wù)器的 IP 地址和端口號(hào)
- SENTINEL?reset?<pattern>??重置所有名字和給定模式 pattern 相匹配的主服務(wù)器。重置操作清除主服務(wù)器目前的所有狀態(tài), 包括正在執(zhí)行中的故障轉(zhuǎn)移, 并移除目前已經(jīng)發(fā)現(xiàn)和關(guān)聯(lián)的, 主服務(wù)器的所有從服務(wù)器和 Sentinel
- SENTINEL?failover?<master?name>??當(dāng)主服務(wù)器失效時(shí), 在不詢問其他 Sentinel 意見的情況下, 強(qiáng)制開始一次自動(dòng)故障遷移,但是它會(huì)給其他sentinel發(fā)送一個(gè)最新的配置,其他sentinel會(huì)根據(jù)這個(gè)配置進(jìn)行更新
具體操作
- 新建sentinel文件夾,在其下新建20190、20191、20192和scripts文件夾,在文件夾的名字也是其對(duì)應(yīng)的端口名字,在端口名字文件夾下新建conf、data和logs文件夾
- mkdir sentinel
- mkdir -pv {20190,20191,20192}/{conf,data,logs}
- 啟動(dòng)方式redis-server 20190/conf/sentinel.conf --sentinel
- 或者redis-sentinel 20190/cong]f/sentinel.conf
- 在sentinel文件夾下,此時(shí)此文件下存放的就是20190、20191和20192文件夾,使用命令cp 20190/conf/sentinel.conf 20191/conf完成conf文件的拷貝,使用命令sed -i "s/20190/20191/g" 20191/conf/sentinel.conf完成將20190替換為20191的文本替換,完成即可,別的不需要?jiǎng)?#xff0c;具體內(nèi)容如下
- 在src目錄下,使用命令redis-sentinel /user/local/redis-4.0.14/sentinel/20190/conf/sentinel.conf啟動(dòng)服務(wù),20191和20192也是這樣操作
- 在src目錄下,使用命令redis-cli? -h 192.168.133.130 -p 20190,使用客戶端連接到服務(wù)器??
?
總結(jié)
以上是生活随笔為你收集整理的Redis的哨兵模式Sentinel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安踏运动鞋的价格是多少
- 下一篇: Redis数据缓存