redis sentinel(哨兵機制)部署(Windows下實現)


另外參考:http://www.cnblogs.com/LiZhiW/p/4851631.html

一、准備條件

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. 1、操作系統:win7  
  2. 2、redis版本:redis-2.8.19  

二、下載Redis並解壓

1、下載

由於redis官方並不支持windows操作系統,所以官網上是下不到的,需要到gitlab上下載,下載地址如下:

 

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. https://github.com/MSOpenTech/redis/releases?after=win-2.8.2101  

 

2、解壓

將下載后的zip文件解壓到本地磁盤,注意解壓到的目錄不能有中文和特殊字符,否則會出現很多奇葩的問題。解壓后的目錄如下:

三、HA配置

我們采用一主(master)二從(slave)三sentinel的架構模式來做演示

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. master ip:127.0.0.1 port:6379  
  2. slave1 ip:127.0.0.1 port:6380  
  3. slave2 ip:127.0.0.1 port:6381  

四、新建和修改配置文件

1、修改redis.conf配置文件

由於我們采用的是一主二從三sentinel的模式,所以我們需要6個配置文件,拷貝2份redis.conf配置文件,分別命名為redis6380.conf和redis6381.conf,其中修改redis.conf配置文件的如下幾個參數:

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. port 6379  
  2. bind 127.0.0.1  

修改redis6380.conf配置文件的如下幾個參數:

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. port 6380  
  2. bind 127.0.0.1  
  3. slaveof 127.0.0.1 6379  // 設置master服務器為6379  

同理修改redis6381.conf配置文件

2、創建並修改sentinel.conf

該模式使用了3sentinel,所以我們需要復制3份sentinel.conf配置文件,並分別命名為sentinel26479.conf和sentinel26579.conf,其中修改sentinel.conf配置文件中的如下幾個參數:

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. port 26379 // 當前Sentinel服務運行的端口  
  2. sentinel monitor mymaster 127.0.0.1 6379 2   
  3. sentinel down-after-milliseconds mymaster 5000  
  4. sentinel parallel-syncs mymaster 1  
  5. sentinel failover-timeout mymaster 15000  

同理,修改另外的兩個配置文件

配置文件說明:

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. 1. port :當前Sentinel服務運行的端口  
  2. 2.sentinel monitor mymaster 127.0.0.1 6379 2:Sentinel去監視一個名為mymaster的主redis實例,這個主實例的IP地址為本機地址127.0.0.1,端口號為6379,而將這個主實例判斷為失效至少需要2個 Sentinel進程的同意,只要同意Sentinel的數量不達標,自動failover就不會執行  
  3. 3.sentinel down-after-milliseconds mymaster 5000:指定了Sentinel認為Redis實例已經失效所需的毫秒數。當 實例超過該時間沒有返回PING,或者直接返回錯誤,那么Sentinel將這個實例標記為主觀下線。只有一個 Sentinel進程將實例標記為主觀下線並不一定會引起實例的自動故障遷移:只有在足夠數量的Sentinel都將一個實例標記為主觀下線之后,實例才會被標記為客觀下線,這時自動故障遷移才會執行  
  4. 4.sentinel parallel-syncs mymaster 1:指定了在執行故障轉移時,最多可以有多少個從Redis實例在同步新的主實例,在從Redis實例較多的情況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長  
  5. 5.sentinel failover-timeout mymaster 15000:如果在該時間(ms)內未能完成failover操作,則認為該failover失敗  

五、啟動服務器

1、分別啟動master,slave1,slave2

啟動命令分別如下:

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. redis-server.exe redis.conf  
  2. redis-server.exe redis6380.conf  
  3. redis-server.exe redis6381.conf  

2、分別啟動sentinel1,sentinel2,sentinel3

啟動命令分別如下:

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. redis-server.exe sentinel.conf --sentinel  
  2. redis-server.exe sentinel26479.conf --sentinel  
  3. redis-server.exe sentinel26579.conf --sentinel  

服務啟動成功后,界面顯示如下:

3、查看redis服務器狀態

4、查看sentinel的狀態

六、測試服務器

這里只做簡單的測試

七、redis主從自動failover測試

1、停止master服務器

2、查看剩余服務器的狀態

從上圖中可以看出來,master的服務器端口從6379變成了6380,也就是說redis自動的實現了主從切換,我們可以在查看下sentinel的狀態,如下:

我們發現sentinel監控到127.0.0.1:6379已經無法ping通了,切換master服務器為127.0.0.1:6380

轉載:http://blog.csdn.net/liuchuanhong1/article/details/53206028


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM