在windows上搭建redis叢集(Redis-Sentinel)
Redis叢集策略主要有:
- 主從複製(Master-Slave)
- 哨兵模式(Redis-Sentinel)
- 分片(Redis-Sharding)
本文主要講解如何搭建哨兵模式。
**********************************************************************************************************************************************
採用一主(MASTER)二從(SLAVE)三哨兵(SENTINEL)的架構
**********************************************************************************************************************************************
一、下載安裝Redis
redis下載地址
1)下載Redis-x64-3.2.100.zip。
2)解壓檔案,複製兩份並重命名,形成三個資料夾:master_6379、salve_6380、slave_6381
二、配置檔案
1)主從配置
1.1 master_6379資料夾中redis.windows.conf檔案配置
port 6379
1.2 slave_6380資料夾中redis.windows.conf檔案配置
port 6380 slaveof 127.0.0.1 6379
1.3 slave_6381資料夾中redis.windows.conf檔案配置
port 6381 slaveof 127.0.0.1 6379
2)哨兵配置
每一個redis目錄中都建立一個文sentinel.conf檔案
2.1 master_6379的sentinel.conf檔案配置如下
#當前Sentinel服務執行的埠 port 26379 #master #Sentinel去監視一個名為mymaster的主redis例項,這個主例項的IP地址為本機地址127.0.0.1,埠號為6379, #而將這個主例項判斷為失效至少需要2個 Sentinel程序的同意,只要同意Sentinel的數量不達標,自動failover就不會執行 sentinel monitor mymaster 127.0.0.1 6379 1 #指定了Sentinel認為Redis例項已經失效所需的毫秒數。當 例項超過該時間沒有返回PING,或者直接返回錯誤,那麼Sentinel將這個例項標記為主觀下線。 #只有一個 Sentinel程序將例項標記為主觀下線並不一定會引起例項的自動故障遷移:只有在足夠數量的Sentinel都將一個例項標記為主觀下線之後,例項才會被標記為客觀下線,這時自動故障遷移才會執行 sentinel down-after-milliseconds mymaster 5000 #指定了在執行故障轉移時,最多可以有多少個從Redis例項在同步新的主例項,在從Redis例項較多的情況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長 sentinel config-epoch mymaster 12 #如果在該時間(ms)內未能完成failover操作,則認為該failover失敗 sentinel leader-epoch mymaster 13
2.2 slave_6380中的sentinel.conf檔案配置
#當前Sentine2服務執行的埠
port 26479
#slave1
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel config-epoch mymaster 12
sentinel leader-epoch mymaster 13
2.3 slave_6381中的sentinel.conf檔案配置
#當前Sentine3服務執行的埠
port 26579
#slave2
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel config-epoch mymaster 12
sentinel leader-epoch mymaster 13
三、啟動服務
1)編寫啟動redis指令碼
編寫一個 bat 來啟動 redis,在每個節點目錄下建立 startup.bat,內容如下: title master_6379 redis-server.exe redis.windows.conf
編寫一個 bat 來啟動 sentinel,在每個節點目錄下建立 startup_sentinel.bat,內容如下:
title master_6379 redis-server.exe sentinel.conf --sentinel
title命名規則 redis資料夾名, 注意“--sentinel”不是註釋,必須存在。
另外啟動sentinel還可以使用 redis-sentinel sentinel.conf 命令來啟動
2)或者直接程式碼啟動redis
啟動redis成功:
啟動sentinel成功
四 測試服務