Redis——学习之路四(初识主从配置)
生活随笔
收集整理的這篇文章主要介紹了
Redis——学习之路四(初识主从配置)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先我們配置一臺(tái)master服務(wù)器,兩臺(tái)slave服務(wù)器。master服務(wù)器配置就是默認(rèn)配置 端口為6379,添加就一個(gè)密碼CeshiPassword,然后啟動(dòng)master服務(wù)器。
兩臺(tái)slave服務(wù)器配置如下: 1.先找到配置redis.windows-service.config文件修改port 6379 為port 6380 2.然后配置master服務(wù)器地址:slaveof 127.0.0.1 6379,然后主服務(wù)有密碼還需要配置密碼?masterauth CeshiPassword(本人有密碼) 3.啟動(dòng)從服務(wù)器的加上這個(gè)配置文件redis-server?redis.windows-service.config 4.然后在主服務(wù)器基本信息(info),可以看到如圖,說(shuō)明主從配置成功 5.另一臺(tái)slave服務(wù)器port修改為6381 其它配置一樣下面我來(lái)簡(jiǎn)單的驗(yàn)證一下
先連接master服務(wù)在服務(wù)器上set一個(gè) name "hello world",然后連接其中一臺(tái)slave服務(wù)器get一下。
這是master服務(wù)器的結(jié)果。 這是slave服務(wù)器的結(jié)果。 我們看到slave有同步到master服務(wù)器set name的值,但是下面當(dāng)我們想給slave服務(wù)器set時(shí)報(bào)錯(cuò),這個(gè)是為了數(shù)據(jù)庫(kù)同步才這樣設(shè)置的。就是讓用戶不會(huì)誤操作,導(dǎo)致數(shù)據(jù)庫(kù)的不一致。當(dāng)然這個(gè)設(shè)置在.conf里面的slave-read-only yes 這個(gè)我們上一章介紹過(guò)。 這樣我們就完成就redis的主從配置,如果你還想要添加slave服務(wù)器就只需要按上面的步驟修改為不同的端口即可。下面我們來(lái)說(shuō)明一下一個(gè)很?chē)?yán)重的問(wèn)題,如果某天出現(xiàn)master服務(wù)器宕機(jī)了那怎么辦?master服務(wù)器宕機(jī)了,我們可以實(shí)際操作一下,會(huì)出現(xiàn)上面樣的情況。 我們來(lái)關(guān)閉master服務(wù)器?,然后去slave服務(wù)器獲取name 的值 發(fā)現(xiàn)依然可以正常獲取。有一個(gè)問(wèn)題現(xiàn)在我們雖然可以正常獲取但是已經(jīng)沒(méi)有set的服務(wù)器了,就是說(shuō)我們的服務(wù)器只能get不可以set。我們?cè)俨榭磗lave服務(wù)info 可以看到maste_link_status狀態(tài)是down,正常連接狀態(tài)為up。如果遇到這么的情況我們應(yīng)該怎么去處理呢? 我們是不是應(yīng)該講現(xiàn)在可以正常工作的兩臺(tái)slave服務(wù)選取一臺(tái)變?yōu)閙aster服務(wù)器好讓redis正常工作。 下面提供兩種方法: 1.手動(dòng)切換(slave到master) 首先這里選擇6380服務(wù)器輸入命令slaveof?no one,意思就是告訴這臺(tái)slave服務(wù)器已經(jīng)沒(méi)有master服務(wù)器了,你會(huì)成為master服務(wù)器。 我們?cè)谶@臺(tái)服務(wù)器上輸入info 查看 發(fā)現(xiàn)這臺(tái)服務(wù)變成了master 接著我們要做的是將6381這臺(tái)slave服務(wù)器指向6380這臺(tái)master 這樣我們就手動(dòng)完成了master宕機(jī)到選擇一臺(tái)slave服務(wù)器為master服務(wù)器。有人一定會(huì)說(shuō)讓維護(hù)人員自己手動(dòng)操作這不是耽誤事情嘛,確實(shí)是這樣如果mster需要我們手動(dòng)去操作那用戶早就跑光了。 2.自動(dòng)切換(sentinel哨兵) 這是在redis2.4以后版本,redis作者antirez考慮到社區(qū)的需求寫(xiě)的一個(gè)自動(dòng)維護(hù)工具名字叫redis-sentinel。在redis2.8與redis3.0時(shí)將sentinel2集成到了redis-server中,在redis2.8以前的版本可能你還是需要自己去下載源代碼編譯生成redis-sentinel然后使用。這里就不講了,我們只說(shuō)redis2.8這個(gè)版本的。首先我們需要去官方下載redis2.8對(duì)應(yīng)版本的sentinel.conf,不要下載redis3.0,我就下載過(guò),啟動(dòng)時(shí)報(bào)參數(shù)錯(cuò)誤(如圖下圖)。 下載完成后我們先來(lái)看看sentinel有哪些我們?nèi)ズ?jiǎn)單配置就能完成我們的業(yè)務(wù)需求的。 第一個(gè)參數(shù)是主服務(wù)器的名稱,然后是IP地址,端口號(hào),以及需要幾個(gè)sentinel選舉,我們只運(yùn)行了一個(gè)sentinel做簡(jiǎn)單選舉。 sentinel monitor <master-name> <ip> <redis-port> <quorum>? sentinel monitor mymaster 127.0.0.1 6379 1? 配置監(jiān)控連接的密碼,參數(shù)一:主服務(wù)器的名稱,參數(shù)二:密碼 sentinel auth-pass <master-name> <password>? sentinel auth-pass mymaster CeshiPassword 指定了Sentinel認(rèn)為Redis實(shí)例已經(jīng)失效所需的毫秒數(shù),這里使用默認(rèn)值30秒 sentinel down-after-milliseconds <master-name> <milliseconds>? sentinel down-after-milliseconds mymaster 30000??
同時(shí)我們需要為slave服務(wù)器配置一下優(yōu)先級(jí),即當(dāng)master宕機(jī)時(shí)誰(shuí)被選定為新的master的優(yōu)先級(jí)。我給6381端口的服務(wù)器設(shè)置了 slave-priority 1 slave優(yōu)先級(jí)最高,給6380端口的服務(wù)設(shè)置了默認(rèn)值100。也就是說(shuō)當(dāng)6379宕機(jī)時(shí)6380會(huì)被sentinel選舉為master。現(xiàn)在我們先啟動(dòng)這個(gè)三臺(tái)redis服務(wù)器,然后啟動(dòng)我們的sentinel服務(wù)輸入命令 redis-server sentinel.conf --sentinel 上圖可以看到sentinel監(jiān)控了 127.0.0.1 6379 同時(shí)發(fā)現(xiàn)了 兩臺(tái)salve服務(wù)器 127.0.0.1 6380 與127.0.0.6381 現(xiàn)在我們來(lái)關(guān)閉master這臺(tái)服務(wù)器。 然后發(fā)現(xiàn)sentinel監(jiān)控到了,通知他選舉6380這個(gè)slave為master了。 然后當(dāng)我們重啟127.0.0.1 6379 服務(wù)器時(shí),發(fā)現(xiàn)它居然自動(dòng)加入了到原來(lái)的集群中,自動(dòng)成6381的slave服務(wù)器。 但是當(dāng)我們查看info信息時(shí)發(fā)現(xiàn)只有一臺(tái)slave服務(wù) 再查看6379服務(wù)的狀態(tài),連接狀態(tài)是down 為什么呢?指定服務(wù)地址端口正確,對(duì)那就是密碼不正確,查看配置信息果然我們重啟的6379服務(wù)沒(méi)有設(shè)置訪問(wèn)6381的密碼。 設(shè)置密碼 config set masterauth CeshiPassword ,查看6381slave服務(wù)信息 ok 查看6379信息,如下圖連接狀態(tài)為up了下一章將學(xué)習(xí)一下C#客戶端如果調(diào)用redis。
轉(zhuǎn)載于:https://www.cnblogs.com/zxtceq/p/7890944.html
總結(jié)
以上是生活随笔為你收集整理的Redis——学习之路四(初识主从配置)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: gulp-load-task 解决 gu
- 下一篇: 洛谷 P1218 [USACO1.5]特