1.主從概念
一個master可以擁有多個slave,一個slave又可以擁有多個slave。如此下去,形成了強大的多級伺服器叢集架構。
master用寫資料,經統計:網站的讀寫比率是10:1
通過主從分離可以實現讀寫分離
master和slave都是一個redis例項(redis服務)
2.主從配置
## 主服務master ##
#1. 修改 master配置
進入你的redis安裝目錄 /www/server/redis/redis.conf
#2.修改bind為本機ip
bind your_ip
## 從服務slave配置 ##
#1.複製redis.conf 名為slave.conf
cp redis.conf slave.conf
#2.修改配置 修改bind為本機ip
bind your_ip
#3.更改埠 例如
port 6378
#4. 輸入命令啟動從服務 :
/www/server/redis/src/redis-server /etc/redis/slave.conf
#5. 更改slaveof(主從關係,因為剛新增的預設為主服務)
1. 輸入命令:redis-cli -h 127.0.0.1 -p 6378
2. 輸入命令:slaveof your_ip 6379 //進入6378把6379修改為主服務
3.然後檢視主從關係:
redis-cli -h your_ip -p your_port info Replication
或者:
1. 執行命令:redis-cli -h 127.0.0.1 -p 6375
2. info Replication
4.Master節點設定key後非同步同步到Slaver節點;Slaver節點只能讀取資料,不能修改,從而形成了讀寫分離
5.使用哨兵模式,自動監視Master節點,當前主服務掛掉後,自動將Slaver節點變為Master節點
配置目錄:/www/server/redis/sentinel.conf
#普通配置
#埠號
port 26379
#pid 檔案
pidfile "/var/run/redis-sentinel2.pid"
#哨兵工作空間路徑
dir /usr/local/redis/sentinel
#程式守護,允許後臺執行
daemonize yes
#不開啟模組保護,允許遠端訪問
protected-mode no
#日誌存放位置
logfile "/www/server/redis/sentinel2.log"
#核心配置
# 配置哨兵,mymaster隨意,至少給主節點定的暱稱,注意配置一致即可
# 1表示配置哨兵,有1個哨兵作出決策,就有決策權
sentinel monitor mymaster 127.0.0.1 6379 1
# 密碼
sentinel auth-pass <master-name> <password>
# master被sentinel認定為失效的間隔時間
sentinel down-after-milliseconds mymaster 30000
# 剩餘的slaves重新和新的master做同步的並行個數
sentinel parallel-syncs mymaster 1
# 主備切換的超時時間,哨兵要去做故障轉移,這個時候哨兵也是一個程式,如果他沒有去執行,超過這個時間後,會由其他的哨兵來處理
sentinel failover-timeout mymaster 180000
6.執行命令啟動哨兵:
/www/server/redis/src/redis-sentinel /www/server/redis/sentinel.conf
7.檢視是否啟動:
ps -ef|grep redis
8.然後手動殺死 6379 主服務:
kill -9 839513(你自己的程式id)
9. 1分鐘或者幾十秒後,接下來我們檢視哨兵日誌,選了從服務6377為主服務了
再執行命令檢視:
redis-cli -h 127.0.0.1 -p 6375 info Replication
總結
- Master可讀可寫,Slaver只能讀,不能寫
- Master可以對應多個Slaver,但是數量越多壓力越大,延遲就可能越嚴重
- Master寫入後立即返回,幾乎同時將寫入非同步同步到各個Slaver,所以基本上延遲可以忽略
- 可以通過slaveof no one命令將Slaver升級為Master(當Master掛掉時,手動將某個Slaver變為Master)
- 可以通過sentinel哨兵模式監控Master,當Master掛掉時自動選舉Slaver變為Master,其它Slaver自動重連新的Master
本作品採用《CC 協議》,轉載必須註明作者和本文連結