部署架構上采用三台機器,一個master接受寫請求,兩個slave進行資料同步,三台機器上都部署sentinel(一般為奇數個,因為需要絕大部分進行投票才能failover)。(官方示例)具體架構如下圖:
注意:如果有條件可以将sentinel多部署幾個在用戶端所在的應用伺服器上,而不是與從節點部署在一起,這樣避免整機當機後sentinel和slave都減少而導緻的切換選舉sentinel無法超過半數。
redis高可用環境不需要進行心跳線的配置,每個實體節點的網卡進行雙網卡主備綁定生成bond0即可。
使用者名
使用者所在組
使用者目錄
權限
備注
redis(10086)
redis (10086)
/redis
sudo(如需要浮動ip時賦予)
--
如果讀多寫少,可以在master上隻開啟aof,在低峰期定時進行bgsave,在slave上徹底關閉持久化。 如果讀寫差不多,可以在一個slave上開啟rdb(這個slave隻做持久化,不進行讀操作),在其餘主從都關閉持久化。 注意:從節點是不會從本地恢複而直接從master節點進行恢複的,是以在重新開機前如果有需要備份從節點,則需要把aof和rdb檔案移走。
目錄
含義
/redis/bin
redis可執行檔案
/redis/conf
redis 和supervisord的配置檔案
/redis/run
redis和supervisord運作時的pid檔案
/redis/log
redis和supervisord的日志
/redis/script
一些管理腳本和測試腳本
/redis/data
redis持久化資料目錄
解壓下列壓縮包至/tmp/redis目錄,以符合上述目錄結構:
部署相關元件: cd /tmp/redis/deploy ./deploy.sh
修改master配置檔案redis.conf,注釋掉包含slaveof的語句。 修改slave配置檔案redis.conf,添加slaveof masterip port,指定主從 修改三台機器的sentinel配置檔案,指定主伺服器的ip和端口: sentinel monitor mymaster masterip port 2
然後使用supervisord重新啟動。
首先,一個sentinel可以配置多個master。一個master的配置如下:
<b>本文為《redis開發運維實踐指南》内容,該書作者為黃鵬程,已授權雲栖社群轉載。</b>