Redis3.0基於windows的集羣



Redis3.0基於windows的集羣

一、配置環境

  • Redis:3.0

  • Win7:sp2

  • Ruby: ruby 2.3.1p112

1.1集羣方案

16節點33從,即6節點1個副本,1份數據在集羣中存儲2份。

2、使用redis-trib.rb工具的create子命令提供了--args參數來指定集羣中的Master節點擁有幾個Slave節點,譬如使用6redis實例構建集羣且--args參數值爲1,那麼整個集羣就包含三個Master節點和三個Slave節點,每個Master節點都有一個Slave節點。這裏我們只有三個redis實例,所以選擇不爲Master節點配備Slave節點,創建集羣的方法和結果如圖三所示,從中可知Redis集羣已經構建成功,其中監聽6379的實例負責存儲0-5460哈希槽,監聽6380的實例負責存儲5461-10921哈希槽,監聽6381的實例負責存儲10922-16383哈希槽。

1.2集羣拓撲節構

Redis 集羣是一個網狀結構,每個節點都通過 TCP 連接跟其他每個節點連接。

在一個有 N 個節點的集羣中,每個節點都有 N-1 個對外的 TCP 連接,和N-1 個對內的連接。

這些 TCP 連接會永久保持,並不是按需創建的。當一個節點在集羣總線中預計回覆一個ping,等待足夠長的時間,以標識節點不可達,它會嘗試從頭開始連接來刷新與節點的連接。

Redis的羣集節點形成全網狀,節點使用gossip協議和一個配置更新機制,以避免在正常條件下交換節點之間太多消息,因此,交換的消息的數量不是指數。

二、集羣配置

新建6個文件夾分別是 7000/7001/7002/7003/7004/7005

安裝Ruby環境,安裝:rubyinstaller-2.3.0-x64.exe

http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe

這裏將Ruby安裝在 C:\Ruby22-x64 目錄下。 

https://github.com/MSOpenTech/redis/releases/download/win-3.0.501/Redis-x64-3.0.501.msi

這裏將Redis安裝在 C:\Redis 目錄下,或者到https://github.com/MSOpenTech/redis/releases  下載綠色的安裝包;

解壓Redis 3.0綠色安裝包壓到指定目錄 

 

2.17000配置

1. redis.windows.conf 複製一份然後修改配置文件中的下面選項。

#redis 端口號

port 7000

 

#開啓集羣

cluster-enabled yes

 

#集羣模式下,每個redis節點生成一個自己的集羣配置文件,這個文件不需要人工修改,由redis自己維護

cluster-config-file nodes.7000.conf

 

#集羣模式時,當前節點在與其他節點保活探測時,多久沒有響應時認爲其他節點處於fail狀態,上面是5

cluster-node-timeout 5000

 

#是否開啓appendonlylog,開啓的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。)

appendonly yes

appendfilename "appendonly.7000.aof"

 

#(默認爲Yes,丟失一定比例Key後(可能Node無法連接或者掛掉),集羣停止接受寫操作 no:允許某些slot沒有active節點的時候其餘slot還能用。

#就是其中1個實例掛掉,不會導致整個rediscluster都不可用了

cluster-require-full-coverage yes

 

#控制從節點FailOver相關的 設置設爲0,從節點會一直嘗試啓動FailOver.設爲正數,失聯大於一定時間(factor*節點TimeOut),不再進行FailOver

cluster-slave-validity-factor 10

(注意:拷貝完成之後要修改 7001/7002/7003/7004/7005 目錄下面 redis.windows.conf 文件中的 port 參數,分別改爲對應的文件夾的名稱)。

2.27001配置

拷貝5redis目錄下的redis. windows.conf文件,依次根據7000進行配置。

其他7002700370047005配置同上。

2.3、創建集羣

下載ruby文件:

https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb

如果在第一步時頁面下載了redis源代碼,那麼它的src下也有這個文件。將redis-trib.rb放到某文件夾下,在命令窗口中用執行命令:
  redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
 
會提示是否確定,輸入yes後,就ok

 

 

 

2.4、集羣是啓動

redis-serverredis.windows.conf    #所節點啓動都相同。

2.5、集羣是連接

redis-cli-c -p 7000  #連接7000,其他節點,只需修改端口號即可。

2.6、安裝redis服務[可選操作]

用命令窗口,在redis目錄中,執行命令:redis-server.exe redis.windows.conf啓動redis實例,將6個端口的配置都執行一下,共6個窗口。沒錯誤就OK了,有問題也就是端口衝突了。

如果不想用命令窗口形式啓動,可以安裝rediswindows服務,命令窗口切換到在d:\rediscluster\redis目錄下,安裝服務命令爲:

1.   redis-server.exe --service-install redis.windows.conf --service-name redis7000  

redis-server.exe--service-install redis.7000.conf --service-name redis7000

 將此命令修改後(配置文件名和服務名),執行6次,依次把6個配置文件都安裝爲服務,然後啓動服務就可以了。

 

三、集羣測試與使用

3.1、查看節點情況

輸入redis7000>redis-trib.rbcheck 127.0.0.1:7000查看節點情況

3.2、節點數據存儲測試

通過2.7、集羣是連接節點7000,輸入“set sss 123”如下:

連接節點7000,輸入”get  sss 123”如下:

連接節點7005,輸入”get  sss 123”如下:

結果爲123,同時將節點漂移到7000了。

三、節點熱擴充

3.1、動態的向集羣是添加一個從節點

1

redis-trib.rb add-node 127.0.0.1:7008(要添加的節點) 127.0.0.1:7002(任意一臺正在運行的節點)

此增加的爲從節點,即向7002增加從節點。增加之前需要連接新增節點並執行“>flushdb”進行數據清空。

增加節點:

3.2、動態的向集羣是添加一個主節點

1

redis-trib.rb add-node 127.0.0.1:7008(要添加的節點) 127.0.0.1:7002(任意一臺正在運行的節點)

此增加的爲從節點,即向7002增加主節點。增加之前需要連接新增節點並執行“>flushdb”進行數據清空。當7002節點爲從節點時,增加的節點將爲集羣中的主節點,當7002爲主節點時,增加的節點將爲從節點。

1增加主節點之後需要分配哈希卡槽(0 slots)。

2輸入分配的卡槽數量

3輸入分配的節點ID

4從哪些節點進行遷移,輸入ALL表示從所以節點平均遷移。

5確認遷移

6遷移完成並檢查

三、參考文獻

http://www.cnblogs.com/raphael5200/p/5681114.html

http://stackoverflow.com/questions/34230131/err-slot-xxx-is-already-busy-rediscommanderror

http://blog.csdn.net/yys79/article/details/51566417

http://ifeve.com/redis-cluster-spec/

 

發佈了19 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章