一、驗證環境
1、作業系統:win10
2、redis版本:redis-2.8.22
二、驗證步驟:
本次驗證方案為:采用一主(master)二從(slave)三(sentinel)的架構模式master ip:127.0.0.1 port:6379
slave0 ip:127.0.0.1 port:6380
slave1 ip:127.0.0.1 port:6381
sentinel-26379 ip:127.0.0.1 port:26379
sentinel-26380 ip:127.0.0.1 port:26380
sentinel-26381 ip:127.0.0.1 port:26381
1.下載下傳Redis安裝包
解壓并且複制三份,名字分别為,Redis-x64-2.8.2-6379,Redis-x64-2.8.2-6380,Redis-x64-2.8.2-6381
2.修改配置檔案(redis.windows.conf)
2.1.主配置檔案修改内容(6379)#redis通路端口号
port 6379
#綁定redis通路位址
bind 127.0.0.1
2.2. 從配置檔案修改内容(6380)#redis通路端口号
port 6380
#綁定redis通路位址
bind 127.0.0.1
#綁定master服務ip port
slaveof 127.0.0.1 6379
2.3. 從配置檔案修改内容(6381)#redis通路端口号
port 6381
#綁定redis通路位址
bind 127.0.0.1
#綁定master服務ip port
slaveof 127.0.0.1 6379
3.啟動redis服務
分别切換到對應目錄啟動master,slave0,slave1,執行啟動指令:
redis-server.exe redis.windows.conf
啟動後頁面
驗證是否6379是master,6380和6381是slave
1.使用連接配接工具
連接配接redis分别執行指令:
info replication
主服務
從服務80
從服務81
驗證主從綁定成功!
4.三哨兵搭建
4.1.在redis檔案夾下建一個 sentinel-26379.conf,sentinel-26380.conf ,sentinel-26381.conf
4.2 哨兵配置檔案内容分别是:
主配置檔案内容(6379)# 配置 sentinel 端口号
port 26379
# 以守護程序啟動
daemonize yes
# 綁定隻在本地使用
bind 127.0.0.1
# 日志檔案名稱
logfile "sentinel_26379.log"
# 日志檔案存放位址
dir "./"
# 監控 master 名字叫做 mymaster,位址是 127.0.0.1 端口号是 6379,1 表示有幾個 sentinel 認為該 master 出現故障,觸發主備切換動作
sentinel monitor mymaster 127.0.0.1 6379 2
# 指定多少毫秒之後 主節點沒有應答哨兵sentinel 此時 哨兵主觀上認為主節點下線 預設30秒
sentinel down-after-milliseconds mymaster 30000
# 主備切換時,多少個從伺服器同步更新資料,數值越小越好
sentinel parallel-syncs mymaster 1
# 故障轉移的逾時時間 failover-timeout 可以用在以下這些方面:
#1. 同一個sentinel對同一個master兩次failover之間的間隔時間。
#2. 當一個slave從一個錯誤的master那裡同步資料開始計算時間。直到slave被糾正為向正确的master那裡同步資料時。
#3.當想要取消一個正在進行的failover所需要的時間。
#4.當進行failover時,配置所有slaves指向新的master所需的最大時間。不過,即使過了這個逾時,slaves依然會被正确配置為指向master,但是就不按parallel-syncs所配置的規則來了
# 預設三分鐘
sentinel failover-timeout mymaster 180000
從配置檔案(6380)# 配置 sentinel 端口号
port 26380
# 以守護程序啟動
daemonize yes
# 綁定隻在本地使用
bind 127.0.0.1
# 日志檔案名稱
logfile "sentinel_26380.log"
# 日志檔案存放位址
dir "./"
# 監控 master 名字叫做 mymaster,位址是 127.0.0.1 端口号是 6379,1 表示有幾個 sentinel 認為該 master 出現故障,觸發主備切換動作
sentinel monitor mymaster 127.0.0.1 6379 2
# 指定多少毫秒之後 主節點沒有應答哨兵sentinel 此時 哨兵主觀上認為主節點下線 預設30秒
sentinel down-after-milliseconds mymaster 30000
# 主備切換時,多少個從伺服器同步更新資料,數值越小越好
sentinel parallel-syncs mymaster 1
# 故障轉移的逾時時間 failover-timeout 可以用在以下這些方面:
#1. 同一個sentinel對同一個master兩次failover之間的間隔時間。
#2. 當一個slave從一個錯誤的master那裡同步資料開始計算時間。直到slave被糾正為向正确的master那裡同步資料時。
#3.當想要取消一個正在進行的failover所需要的時間。
#4.當進行failover時,配置所有slaves指向新的master所需的最大時間。不過,即使過了這個逾時,slaves依然會被正确配置為指向master,但是就不按parallel-syncs所配置的規則來了
# 預設三分鐘
sentinel failover-timeout mymaster 180000
從配置檔案(6381)# 配置 sentinel 端口号
port 26381
# 以守護程序啟動
daemonize yes
# 綁定隻在本地使用
bind 127.0.0.1
# 日志檔案名稱
logfile "sentinel_26381.log"
# 日志檔案存放位址
dir "./"
# 監控 master 名字叫做 mymaster,位址是 127.0.0.1 端口号是 6379,1 表示有幾個 sentinel 認為該 master 出現故障,觸發主備切換動作
sentinel monitor mymaster 127.0.0.1 6379 2
# 指定多少毫秒之後 主節點沒有應答哨兵sentinel 此時 哨兵主觀上認為主節點下線 預設30秒
sentinel down-after-milliseconds mymaster 30000
# 主備切換時,多少個從伺服器同步更新資料,數值越小越好
sentinel parallel-syncs mymaster 1
# 故障轉移的逾時時間 failover-timeout 可以用在以下這些方面:
#1. 同一個sentinel對同一個master兩次failover之間的間隔時間。
#2. 當一個slave從一個錯誤的master那裡同步資料開始計算時間。直到slave被糾正為向正确的master那裡同步資料時。
#3.當想要取消一個正在進行的failover所需要的時間。
#4.當進行failover時,配置所有slaves指向新的master所需的最大時間。不過,即使過了這個逾時,slaves依然會被正确配置為指向master,但是就不按parallel-syncs所配置的規則來了
# 預設三分鐘
sentinel failover-timeout mymaster 180000
5. 啟動三哨兵
分别啟動sentinel-26379.conf,sentinel-26380.conf ,sentinel-26381.conf
啟動指令分别如下:redis-server.exe sentinel-26379.conf --sentinel
redis-server.exe sentinel-26380.conf --sentinel
redis-server.exe sentinel-26381.conf --sentinel
啟動後界面
6.驗證主從服務切換
場景:當主服務master6379當機,剩下兩個從服其中一個替換為新的master
主從切換驗證成功!
如果原來的Master6379又恢複了,理論上他不能成為master,就變成slave,驗證步驟
1,恢複6379服務
檢視各個服務資訊
79服務資訊
80服務資訊
81服務資訊
驗證成功!
7.驗證主從服務資料同步
場景:在master80上添加資料,如set name 'fans'
檢視79和81從服能否查到name資料
驗證結果都可以查到,主從資料同步成功!