搭建redis集羣(非Docker Windows server)

Redis集羣

Redis cluster(redis集羣)是在版本3.0後才支持的架構,和其他集羣一樣,都是爲了解決單臺服務器不夠用的情況,也防止了主服務器宕機無備用服務器,多個節點網絡互聯數據共享,所有節點都是一主一從(也可以一主多從),其中不提供服務,只做爲備份。直接進入主題。

所需軟件

注意:版本不對應 可能會造成錯誤,我才疏學淺還沒發現爲什麼會報錯。強烈建議用本文中指定的版本!!

  • Redis: 地址 https://github.com/MSOpenTech/redis/releases 下載Redis-x64-3.2.100.zip

  • Ruby語言運行環境:http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.3.3.exe

  • Redis-trib.rb 下載 https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb(打開是網頁,右鍵另存爲redis-trib.rb )

  • Rubygems Redis 的 Ruby 支持環境 https://rubygems.org/rubygems/rubygems-2.6.12.zip

安裝開始

  1. 在redis目錄下創建6個節點的文件夾:7001-7006(要讓集羣正常運作,至少需要三個主節點,因此我們創建6個節點,三個主節點三個從節點。)
  2. 將下載好的Redis-x64-3.2.100.zip解壓後的文件夾裏的所有文件分別copy到7001-7006文件夾中
  3. 修改6個文件夾下redis.windows.conf 文件配置如下圖,全部配置好之後啓動所有redis節點,爲了方便起見可以寫一個腳本啓動!
	# 配置允許訪問的ip  四個0代表所有
    bind 0.0.0.0
    # 默認爲yes ,這裏爲no,此時外部網絡可以直接訪問
    protected-mode no
    # 端口  可以根據剛纔新建的文件夾命名7001-7006
    port 7001
    # 設置redis最大內存  建議master節點設置大一點 slave設置小  這個取決於你的機器內存大小
    maxmemory 1024m
    # 設置內存淘汰策略
    maxmemory-policy allkeys-lru
    # 開啓aof持久化
    appendonly yes
    # 設置aof持久化文件名
    appendfilename "appendonly-7001.aof"
    # 開啓集羣
    cluster-enabled yes
    # 集羣節點配置文件
    cluster-config-file nodes-7001.conf
    # 集羣節點超時時限
    cluster-node-timeout 15000

注意:如果cluster-enabled 不爲yes, 那麼在使用JedisCluster集羣代碼獲取的時候,會報錯。
cluster-node-timeout 調整爲 15000,那麼在創建集羣的時候,不會超時。 cluster-config-file
nodes-7001.conf 是爲該節點的配置信息,這裏使用 nodes-端口.conf命名方法。服務啓動後會在目錄生成該文件。

RubyInstaller 安裝

打開exe文件,下一步安裝就行了。注意把三項全部勾選。
在這裏插入圖片描述

Rubygems 安裝

將下載好的rubygems-2.6.12.zip解壓,
解壓後,運行文件setup.rb。
執行 gem install redis 安裝 Redis 依賴。
在這裏插入圖片描述

使用Redis cluster

創建集羣
執行以下命令

redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

命令分析:
1)redis-trib.rb create:表示希望創建一個新的集羣。
2)replicas 1:表示爲集羣中的每個主節點創建一個從節點。後面其他參數表示實例的地址列表, 即:程序將使用這些地址所指示的實例來創建新集羣。(節點角色由順序決定,先master之後是slave。)
在這裏插入圖片描述

執行命令後,首先打印出配置信息。上圖表示:
1)使用7000、7001、7002作爲主節點。
2)主從節點的對應關係。
3)各節點對應的 slots 範圍。
例如 7000 這臺機 slots : 0-5460 的意思是:
若 key 進行 CRC16 校驗和的值介於 0-5460 範圍內,則被存儲至7000。
因此,使用前應對業務進行梳理,根據系統中 key 的特點來調整各個機器的slots範圍,以避免 key 集中於部分機器上,以致集羣的效果不大。

確認配置信息後,輸入 yes 並回車確認, 集羣將配置應用到各個節點, 並連接起(join)各個節點 —— 也即是, 讓各個節點開始互相通訊。
在這裏插入圖片描述
配置成功後,redis-trib 將輸出以下信息:

在這裏插入圖片描述
這表示集羣中的 16384 個槽都有至少一個主節點在處理, 集羣運作正常。

創建成功後,nodes-*.conf 將存儲 master 和 slave 的對應關係。以 nodes-7000.conf 爲例:

上圖表示:當前節點(127.0.0.1:7000)節點ID:cb4ea842827dd927058ec5b3abd516f35c697006,主節點,節點編號爲1,對應 slots 的範圍:0-5460,對應的從節點:127.0.0.1:7003。

進入集羣環境

進去隨便一個redis目錄cmd運行
redis-cli -c -p 7001

測試

1、檢查集羣狀態

C:\Redis> redis-trib.rb check 127.0.0.1:7001
在這裏插入圖片描述

若輸出上述信息,則表示集羣啓動成功並處於ok狀態。

2、從port 7003 set一個值,並從port 7005 get出來
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章