前言
前一篇中,我們講解了Redis主從的搭建方式,其實(shí)很簡(jiǎn)單吶有木有,都是配置,連句代碼都沒(méi)有,是不是感覺(jué)高估了Redis主從的搭建方式?哈哈,沒(méi)關(guān)系,跟著博主,包你全會(huì)。今天我們的主題是哨兵,沒(méi)錯(cuò),就是哨兵!有了Redis,要是沒(méi)有哨兵,那真是太可惜了,哨兵是很神圣的一種重要的監(jiān)測(cè)工具,有了哨兵,在Redis主節(jié)點(diǎn)出現(xiàn)問(wèn)題的時(shí)候,哨兵就會(huì)預(yù)警,并選舉出新的master,這樣,Redis的工作就不會(huì)停掉,對(duì)于服務(wù)器來(lái)說(shuō)非常重要。
簡(jiǎn)單哨兵模式
基礎(chǔ)知識(shí)推薦
關(guān)于哨兵的一些概念,博主看到了不少優(yōu)秀的作品,為了防止長(zhǎng)篇大論的寫(xiě)重復(fù)的內(nèi)容,就在這里分享給大家。
Redis中的哨兵模式 - 簡(jiǎn)書(shū)
怎么實(shí)現(xiàn)Redis的高可用?(主從、哨兵、集群) - 知乎
手把手教你配置Redis主從復(fù)制(含詳細(xì)圖文)
這幾篇博客都是非常優(yōu)秀的博客,讀完之后,相信一定會(huì)讓大家受益匪淺,下面就是實(shí)戰(zhàn)階段,大家跟著一起動(dòng)手吧。
Redis主從加碼
我們上一篇是Redis主從,一主一從,相信大家都還記得吧,現(xiàn)在,要求大家再給master節(jié)點(diǎn)增加一個(gè)slave,應(yīng)該很簡(jiǎn)單吧??梢宰约涸囋嚕部梢愿┲饕黄饋?lái)操作。
我們上一篇的文件夾是這樣的:
下面動(dòng)動(dòng)我們的小手,來(lái)增加一個(gè)新的slave,配置如下:
port:6382
daemonize yes
pidfile /var/run/redis_6382.pid
logfile "6382.log"
slaveof localhost 6380
是不是很簡(jiǎn)單,幾乎和另一個(gè)slave一樣,測(cè)試嘛,就免了,基本也沒(méi)改啥,不用測(cè)都知道一定可以,小伙伴可以自行測(cè)試下配置是否正確。
配置哨兵配置文件
首先,我們會(huì)在src文件中看到一個(gè)redis- sentinel文件,這就是哨兵的啟動(dòng)文件了:
接著,要配置的文件名字叫sentinel.conf,我們可以在redis目錄下找到這個(gè)文件:
由于博主安裝Redis的時(shí)候安裝到了src,所以大家才會(huì)看到博主在src操作這些文件,正常來(lái)說(shuō),你安裝在redis目錄下也是可以的,下一步,我們還是把sentinel.conf復(fù)制到src目錄下:
接著來(lái)修改此文件中的配置,需要修改的配置如下:
#配置端口
port 26379
# 設(shè)置為守護(hù)進(jìn)程模式,可先注釋,看投票選主的過(guò)程
#daemonize yes
#日志文件名
logfile "redis_sentinel.log"
#存放備份文件以及日志等文件的目錄
dir "/opt/redis/data"
# redis_sentinel表示hostname,自己隨意取名
# 數(shù)字1表示當(dāng)主機(jī)宕機(jī)后,在從機(jī)中進(jìn)行投票選主,票數(shù)大于1的晉升為主機(jī)
sentinel monitor redis_sentinel 127.0.0.1 6380 1
#30秒ping不通主節(jié)點(diǎn)的信息,主觀認(rèn)為master宕機(jī)
sentinel down-after-milliseconds redis_sentinel 30000
#故障轉(zhuǎn)移后重新主從復(fù)制,1表示串行,>1并行
sentinel parallel-syncs redis_sentinel 1
#故障轉(zhuǎn)移三分鐘內(nèi)沒(méi)有完成,認(rèn)為轉(zhuǎn)移失敗
sentinel failover-timeout redis_sentinel 180000
?有些參數(shù)是默認(rèn)就有的,其實(shí)需要改的就倆:
# 設(shè)置為守護(hù)進(jìn)程模式,可先注釋,看投票選主的過(guò)程
#daemonize yes
# redis_sentinel表示hostname,自己隨意取名
# 數(shù)字1表示當(dāng)主機(jī)宕機(jī)后,在從機(jī)中進(jìn)行投票選主,票數(shù)大于1的晉升為主機(jī)(因?yàn)槲覀儸F(xiàn)在有兩個(gè)從節(jié)點(diǎn))
sentinel monitor redis_sentinel 127.0.0.1 6380 1
雖然默認(rèn)守護(hù)進(jìn)程都沒(méi)有,也就只能算一個(gè)了,像上面那些文件在啟動(dòng)的時(shí)候會(huì)自動(dòng)生成的,我們目前是教學(xué)階段,可以不用管。
啟動(dòng)Redis
進(jìn)入啟動(dòng)文件目錄:
cd Desktop/JAVATOOL/redis/src
大家寫(xiě)自己的路徑。
啟動(dòng)主Redis:
redis-server redis_master.conf
啟動(dòng)兩個(gè)從Redis節(jié)點(diǎn):
redis-server redis_slave0.conf
redis-server redis_slave1.conf
查看redis啟動(dòng)狀態(tài):
ps -ef | grep redis
可以看到三個(gè)Redis服務(wù)都已經(jīng)啟動(dòng)起來(lái)了,測(cè)試博主就不貼出來(lái)了,大家自行測(cè)試就好。
啟動(dòng)哨兵
?啟動(dòng)哨兵:
redis-sentinel sentinel.conf
此時(shí)博主電腦彈了一個(gè)允許使用網(wǎng)絡(luò)的窗口,手滑直接點(diǎn)了,沒(méi)截圖,算了。?
看運(yùn)行的情況:
哨兵已經(jīng)成功啟動(dòng)了,可以看到主從的關(guān)系了,一主,二從,說(shuō)明我們配置的暫時(shí)沒(méi)問(wèn)題,要確認(rèn)哨兵能不能正常工作,還要看master宕機(jī)后能不能自動(dòng)選主。
測(cè)試哨兵是否配置成功
為了看哨兵是否能正常工作,選出新的mater,我們需要手動(dòng)干掉redis的master節(jié)點(diǎn),通過(guò)
ps -ef | grep redis
新開(kāi)一個(gè)終端,查看幾個(gè)節(jié)點(diǎn)~這應(yīng)該是進(jìn)程號(hào):
通過(guò)kill命令殺死主節(jié)點(diǎn):
kill -9 74840
這里有一整個(gè)投票選主的過(guò)程,目前的主節(jié)點(diǎn)為6381,從節(jié)點(diǎn)為6382,6380也成了從節(jié)點(diǎn),但是其已經(jīng)關(guān)閉了。
重新開(kāi)啟原6380主節(jié)點(diǎn)
?開(kāi)啟原主節(jié)點(diǎn):
redis-server redis_master.conf
新輸出兩句,原主節(jié)點(diǎn)被轉(zhuǎn)為了新主節(jié)點(diǎn)6381的從節(jié)點(diǎn),我們打開(kāi)6380的配置文件看看:
在文檔最后找到了自動(dòng)添加的從節(jié)點(diǎn)配置。到此,我們的測(cè)試就完全結(jié)束了,單節(jié)點(diǎn)哨兵監(jiān)控多節(jié)點(diǎn)主從Redis的配置就成功了。?
殺死全部進(jìn)程
然后可以看到這邊的輸出,大家自己看看,找找感覺(jué),理解一下:?
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-467579.html
結(jié)語(yǔ)
雖然這只是一篇單節(jié)點(diǎn)哨兵的應(yīng)用,但是對(duì)于一些初創(chuàng)型公司或者一些小型起步項(xiàng)目來(lái)說(shuō)已經(jīng)足夠了,并不是所有的公司都會(huì)集群和微服務(wù)都搞的很棒,畢竟這玩意兒可是要花錢的,項(xiàng)目多的時(shí)候,一年隨隨便便服務(wù)器花出去幾百萬(wàn)都是正常,所以也不要指望所有公司都上集群。如果對(duì)集群有需求,沒(méi)關(guān)系,咱們下篇就來(lái)講講哨兵的集群怎么玩。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-467579.html
到了這里,關(guān)于Java開(kāi)發(fā) - 讓你少走彎路的Redis主從實(shí)現(xiàn)單節(jié)點(diǎn)哨兵模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!