redis學習三,Redis主從複製和哨兵模式

Redis主從複製

1.Master能夠擁有多個slave
2.多個slave能夠鏈接同一個Master外,還能夠鏈接到其餘的slave
3.主從複製不會阻塞Master在主從複製時,Master能夠處理client請求。
4.提供系統的伸縮性。

主從複製的過程

1.slave與Master創建鏈接,發送sync同步命令。
也就是說當用戶在Master寫入一條命令後,他們之間會經過一些算法把數據同步到每個slave上。
2.Msater會開啓一個後臺進程,將數據庫快照保存到文件中。同時Master主進程會開始收集新的寫命令並緩存。
3.後臺完成保存後,就將文件發送給slave
4.slave將此文件保存在硬盤上。

主從複製的配置

咱們建立三臺linux服務器,一臺做爲主服務器Master,ip爲192.168.1.10另外兩臺做爲slave,ip分別爲192.168.1.11和192.168.1.12.
三臺服務器分別安裝redis,固然這裏咱們要確保三臺服務器之間是能進行互相通訊的,即互相能夠ping通。而後Master服務器不須要作什麼配置,將11和12兩臺服務器的redis.conf配置文件進行修改以後,redis就會自動的爲咱們實現主從複製。
 
修改兩臺slave的redis.conf這個配置文件。
若是主服務器沒有設置密碼,那麼咱們只要找到slaveof <masterip> <masterport>,這裏咱們的主服務器ip是192.168.1.10,redis端口是6379,那麼咱們只須要在redis.conf配置文件中加入slaveof 192.168.1.10 6379,而後保存便可。
若是主服務器設置了密碼,咱們還須要修改masterauth <master-password>(主服務器的密碼)這個配置項。
 
而後同時啓動三臺服務器 進入到redis-cli客戶端用info命令進行查看狀態(此處個人Master的ip是192.168.1.231,slave的ip分別爲229和230)
咱們看到上面的role顯示此臺機器是master,有兩個slave,還能夠看到對應的ip和端口。
 
此時咱們在slave只能進行讀操做,只能經過master進行寫操做。而且咱們每次的寫操做會發如今每一臺服務器上面都是同步的。
 
簡單的說Redis主從複製,假設咱們有三臺Redis服務器,一臺主服務器Master,兩臺從服務器slave,slave中只能作讀操做。Master可作讀寫操做,每次對Master進行寫操做以後,首先Master會將數據存儲在硬盤中,而後經過sync同步命令將每個slave的數據進行更新,而後每個slave都將更新的數據寫在本身的硬盤中,這樣就保證了數據的一致性。

Redis哨兵模式

若是咱們在使用主從複製的狀況下,Master服務器進行了down機的狀況,咱們的系統就不能再進行寫的操做,因此此時redis在2.6版本引入了哨兵模式,可是並不穩定,2.8版本以後哨兵模式才穩定了起來。
顧名思義Redis的哨兵模式就是對redis系統進行實時的監控,其主要功能有下面兩點
1.監測主數據庫和從數據庫是否正常運行。
2.當咱們的主數據庫出現故障的時候,能夠自動將從數據庫轉換爲主數據庫,實現自動的切換。


實現步驟

這裏咱們仍是使用上面的redis服務器的ip,Master的ip爲192.168.1.229,slave1爲:192.168.1.230,slave2爲:192.168.1.231
在其中一臺服務器配置sentinel.conf(好比192.168.1.230)
1.進入解壓的redis文件夾中使用cp命令將sentinel.conf文件copy到你的redis中的etc文件夾。
2.修改sentinel.conf這個配置文件
打開這個文件 咱們注意到哨兵使用的端口號是26379.
 
dir "/usr/local/redis/etc"這個dir至關於哨兵的一些日誌,咱們修改他的路徑,讓他存放在咱們想要保存的目錄中。
 
sentinel monitor mymaster 192.168.1.229 6379 1 對應的分別是 名稱,ip,端口,投票選舉的次數(那麼咱們哨兵監聽的確定是master的ip而後端口是6379,1說明當master主服務器down機以後,剩下的服務器要進行一個投票選舉出一個主服務器)
 
sentinel down-after-milliseconds mymaster 5000 這個配置表明哨兵0.5ms進行一次檢查這個集羣。
 
sentinel parallel-syncs mymaster 2這個配置表明你的幾個從節點將支持轉換爲主服務器的這個事情。
 
須要修改的幾乎就這幾個配置。
而後 咱們分別啓動三臺redis服務器
輸入bin/redis-server etc/sentinel.conf --sentinel &這個命令啓動哨兵
/usr/local/redis/bin/redis-cli -h 192.168.1.230 -p 26379 info sentinel這個命令是查看哨兵的狀態
咱們看到個人主服務器如今是229如今有兩個slave
 
這樣咱們的哨兵模式就已經開啓了,此時咱們能夠試圖關閉229的redis,而後看哨兵會不會去從兩個從服務器中選舉一臺充當主服務器。
 
相關文章
相關標籤/搜索