寶塔 liunx redis 設定讀寫分離主從複製 + 哨兵自動值守

Pinkerman發表於2022-02-23

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

redis 設定讀寫分離主從複製+哨兵自動值守

或者:

1. 執行命令:redis-cli -h 127.0.0.1 -p 6375
2. info Replication

redis 設定讀寫分離主從複製

redis 設定讀寫分離主從複製

4.Master節點設定key後非同步同步到Slaver節點;Slaver節點只能讀取資料,不能修改,從而形成了讀寫分離

redis 設定讀寫分離主從複製

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

redis 設定讀寫分離主從複製

8.然後手動殺死 6379 主服務:

kill -9 839513(你自己的程式id)

redis 設定讀寫分離主從複製

9. 1分鐘或者幾十秒後,接下來我們檢視哨兵日誌,選了從服務6377為主服務了

redis 設定讀寫分離主從複製

再執行命令檢視:

redis-cli -h 127.0.0.1 -p 6375 info Replication

redis 設定讀寫分離主從複製

總結

  1. Master可讀可寫,Slaver只能讀,不能寫
  2. Master可以對應多個Slaver,但是數量越多壓力越大,延遲就可能越嚴重
  3. Master寫入後立即返回,幾乎同時將寫入非同步同步到各個Slaver,所以基本上延遲可以忽略
  4. 可以通過slaveof no one命令將Slaver升級為Master(當Master掛掉時,手動將某個Slaver變為Master)
  5. 可以通過sentinel哨兵模式監控Master,當Master掛掉時自動選舉Slaver變為Master,其它Slaver自動重連新的Master
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章