天天看點

window下配置redis的一主二從三哨兵模式

1.首先把你下載下傳的redis複制兩份出來,我的分别如下命名

在D盤下建立一個檔案夾,我起名為redis

Redis-master
Redis-slave1
Redis-slave2
           

2.修改配置檔案

2.1修改redis-master的配置檔案redis.windows.conf

port 6000
bind 127.0.0.1
           

2.2修改redis-slave1 和redis-slave2的配置檔案

#redis-slave1的配置檔案

port 6001
bind 127.0.0.1
slaveof 127.0.0.1 6379
           

#redis-slave2的配置檔案

port 6002
bind 127.0.0.1
slaveof 127.0.0.1 6379
           

3.建立哨兵配置檔案,分别命名為

sentinel.conf 
sentinel26479.conf
sentinel26579.conf
           

哨兵配置檔案内容

sentinel.conf

port 26379
#master
sentinel monitor master 127.0.0.1 6380 1
sentinel down-after-milliseconds master 5000
sentinel config-epoch master 1
sentinel leader-epoch master 1


sentinel26479.conf

port 26479
#slave1
sentinel monitor master 127.0.0.1 6380 1
sentinel down-after-milliseconds master 5000
sentinel config-epoch master 1
sentinel leader-epoch master 1


sentinel26579.conf

port 26579
#slave1
sentinel monitor master 127.0.0.1 6380 1
sentinel down-after-milliseconds master 5000
sentinel config-epoch master 1
sentinel leader-epoch master 1
           

哨兵配置檔案說明

1. port :目前Sentinel服務運作的端口  
2.sentinel monitor mymaster 127.0.0.1 6379 2:Sentinel去監視一個名為mymaster的主redis執行個體,這個主執行個體的IP位址為本機位址127.0.0.1,端口号為6379,而将這個主執行個體判斷為失效至少需要2個 Sentinel程序的同意,隻要同意Sentinel的數量不達标,自動failover就不會執行  
3.sentinel down-after-milliseconds mymaster 5000:指定了Sentinel認為Redis執行個體已經失效所需的毫秒數。當 執行個體超過該時間沒有傳回PING,或者直接傳回錯誤,那麼Sentinel将這個執行個體标記為主觀下線。隻有一個 Sentinel程序将執行個體标記為主觀下線并不一定會引起執行個體的自動故障遷移:隻有在足夠數量的Sentinel都将一個執行個體标記為主觀下線之後,執行個體才會被标記為客觀下線,這時自動故障遷移才會執行  
4.sentinel parallel-syncs mymaster 1:指定了在執行故障轉移時,最多可以有多少個從Redis執行個體在同步新的主執行個體,在從Redis執行個體較多的情況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長  
5.sentinel failover-timeout mymaster 15000:如果在該時間(ms)内未能完成failover操作,則認為該failover失敗  
           

4.配置檔案就這些了,下面進行測試看看是否成功

4.1分别啟動每個redis服務,

redis-server.exe redis.windows.conf 
           

4.2然後分别啟動每個redis下的用戶端服務,分别對應如下指令

redis-cli.exe -h 127.0.0.1 -p 6379
redis-cli.exe -h 127.0.0.1 -p 6380
redis-cli.exe -h 127.0.0.1 -p 6381
           

測試資料是否同步,在master用戶端輸入

我在master 設定了一個key為li,值為kaixuan

可以看到兩台從機都同步了資料,當我試圖在從機寫入資料時,是不允許的,告訴我麼隻讀,是以資料隻能從主機寫入,這樣做到讀寫分離

5.我們啟動3個哨兵

指令分别如下

redis-server.exe sentinel.conf --sentinel
redis-server.exe sentinel26479.conf --sentinel
redis-server.exe sentinel26579.conf --sentinel
           

下面測試主從切換

但我主機挂了後,從機是否能成功上位變為主機

先看下目前的redis狀态

分别在用戶端輸入

info replication(如果出現 noauth authentication required 需要輸入auth 密碼)
           

現在down掉主機

我們發現現在其中端口為6380的從機現在變為了主機,說明我們的哨兵起作用了,OK!

繼續閱讀