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,然后看哨兵會不會去從兩個從服務器中選舉一台充當主服務器。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM