redis 主從配置(1主2從加哨兵)
兩個提供參考
https://www.cnblogs.com/gossip/p/5992716.html
https://www.cnblogs.com/dupang/p/6414365.html
一,本文目的
Redis的的的的主從配置分為兩篇文章,第一篇主要介紹了Redis的的的主從配置的搭建過程及使用,第二篇主要說明各種情況下的的Redis的主從狀態,如法師掛掉,奴隸販子掛掉,掛掉後重新加入等。
二,常用命令
- 根據配置檔案啟動redis:./src/redis-server redis.conf
- 啟動哨兵在src下 ./redis-sentnel ../sentnel.conf 要是啟動失敗後邊加上 --
- 啟動redis客戶端:redis-cli -p port
- Slaver連線Master:slaveof host:ip (測試時使用slaveof手動連線master,正式環境使用配置檔案)
- 關閉Redis:shutdown
- 檢視主從資訊:info Replication
Redis的配置
1、按照1主2從的結構搭建,即1個Master,2個Slaver節點
2、Redis配置檔案redis.conf的配置
daemonize (後臺執行) |
pidfile | port | logfile(日誌,src目錄) | # slaveof <masterip> <masterport> (測試時使用slaveof手動連線master,正式環境使用配置檔案) |
|
Master | yes | /var/run/redis6379.pid | 6379 | "redis6379.log" | |
Slaver1 |
yes | /var/run/redis6381.pid | 6381 | "redis6381.log" | slaveof 127.0.0.1 6379 |
Slaver2 | yes | /var/run/redis6382.pid | 6382 | "redis6382.log" | slaveof 127.0.0.1 6379 |
3、配置完成後3個節點都是Master
4、配置主從節點(通過info replication檢視主從關係)
5、Master節點設定key後非同步同步到Slaver節點;Slaver節點只能讀取資料,不能修改
6、主節點掛掉後,手動將S1子節點升級為Master(命令:slaveof no one 手動將Slaver節點升級為Master節點)
操作步驟如下:
a) Master節點:Shutdown關閉節點
b) Slaver1節點:slaveof no one將其升級為Master節點
c) Slaver2節點:使用slaveof 127.0.0.1 6381 重連Slaver2將其視為Master節點
d) 原來的Master節點:重新啟動後,可以使用slaveof 127.0.0.1 6381 連線Slaver2將其視為Master節點,自己成為Slaver節點
7、使用哨兵模式,自動監視Master節點,當前掛掉後,自動將Slaver節點變為Master節點
a) sentinel.conf配置檔案,修改sentinel monitor host6379 127.0.0.1 6379 1,其它使用預設即可
host6379 主機名稱,隨便起 主機IP 埠 1表示選舉,某個slaver得到超過1票則成成為Master節點
sentinel monitor 主機名隨便起 主節點的ip 主節點的埠 某個slaver得到超過1票則成成為Master節點
b) 啟動sentinel: ./redis-sentinel ../sentinel.conf
8、手動shutdown Master節點後,等待一段時間(大概一分鐘),sentinel會重新選舉Master節點。下面將6381選舉為Master節點,6382自動重連6381的Master節點
6379 原來的Master節點重啟後變成Slaver節點
四、總結
- Master可讀可寫,Slaver只能讀,不能寫
- Master可以對應多個Slaver,但是數量越多壓力越大,延遲就可能越嚴重
- Master寫入後立即返回,幾乎同時將寫入非同步同步到各個Slaver,所以基本上延遲可以忽略
- 可以通過slaveof no one命令將Slaver升級為Master(當Master掛掉時,手動將某個Slaver變為Master)
- 可以通過sentinel哨兵模式監控Master,當Master掛掉時自動選舉Slaver變為Master,其它Slaver自動重連新的Master