天天看點

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

一、驗證環境

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

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

2.修改配置檔案(redis.windows.conf)

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

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

啟動後頁面

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

驗證是否6379是master,6380和6381是slave

1.使用連接配接工具

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

連接配接redis分别執行指令:

info replication

主服務

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

從服務80

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

從服務81

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

驗證主從綁定成功!

4.三哨兵搭建

4.1.在redis檔案夾下建一個 sentinel-26379.conf,sentinel-26380.conf ,sentinel-26381.conf

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)
一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)
一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

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

啟動後界面

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

6.驗證主從服務切換

場景:當主服務master6379當機,剩下兩個從服其中一個替換為新的master

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)
一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)
一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

主從切換驗證成功!

如果原來的Master6379又恢複了,理論上他不能成為master,就變成slave,驗證步驟

1,恢複6379服務

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

檢視各個服務資訊

79服務資訊

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

80服務資訊

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

81服務資訊

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

驗證成功!

7.驗證主從服務資料同步

場景:在master80上添加資料,如set name 'fans'

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

檢視79和81從服能否查到name資料

一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)
一主一從二哨兵_基于哨兵模式的redis叢集搭建及驗證(一主二從三哨兵)

驗證結果都可以查到,主從資料同步成功!