前段時間我在centos上搭建過一次redis集羣,那是藉助ruby搭建,此次我介紹一種純redis集羣命令的方式去搭建【最後我會簡單介紹ruby搭建】。html
第一步:下載redis node
在這我用的是linux
第二步:建立一個集羣存放的目錄 redis-cluster .把下載好的redis cp進去,而後修改配置文件。git
注意:windox版本的redis的配置文件 是 redis.windows-service.conf,下面我來進行改造一下,把每一個實例文件夾下的redis.windows-service.conf 修改成 redis +端口.conf的形式。如圖github
修改redis7771.conf文件:主要修改:redis
修改好一個redis 後,再cp出來5份,分別叫redis 7772 | 7773 | 7774 | 7775 | 7776 如圖:windows
這些都修改好以後,咱們的準備工做就算完成了。centos
第三步:啓動7771 --7773 的三臺redis做爲集羣的master節點。ruby
到指定redis文件夾下執行測試
redis-server.exe redis7771.conf
redis-server.exe redis7772.conf
redis-server.exe redis7773.conf
第四步:將redis實例添加到集羣中: 【關於集羣的命令後面我都會貼出來】
啓動7771的客戶端:
添加集羣節點:主要是經過用cluster meet <host> <port>
給集羣添加節點,例如如下:
cluster nodes
出現上面的3行記錄就表示meet
成功,標識myself的是client正在鏈接的redis實例。 可以經過cluster forget
清除集羣中的某個實例。
第五步:分配卡槽 solts (ruby 啓動集羣時候就會均分咱們的卡槽,可是用redis命令啓動集羣不會)
修改nodes-7771 ---- 3 .conf文件
修改好配置文件,重啓redis,看看卡槽是否生效。(這個我配置好以後沒重啓也生效了,爲了保險起見,建議重啓一下)
到這,主節點基本上配置好了。
注意:現在存在這樣一個問題:假設某個master節點掛掉的話,那麼這個集羣就不可用了,因此咱們現在爲集羣中的3個master實例各啓一個slave實例作主備。
第六步:爲每一個master節點配置一個slave節點,作主備,當主節點宕機時,備節點自動切換上來。
如今咱們準備的7774--7776那是實例派上用場了,下面啓動三個redis。
在7771 上把這三個點加到集羣中。
最後用cluster replicate <nodeid>
將777四、777五、7776 分別掛到777一、777二、7773上:
到這,三主三備就搭建好了,當主節點宕機時,從節點就會變成主節點對外服務。測試一下。關閉7772後 7775就應該變成主節點。如圖:
## 集羣(cluster) cluster info 打印集羣的信息 cluster nodes 列出集羣當前已知的所有節點(node)。以及這些節點的相關信息。 ## 節點(node) cluster meet <ip> <port> 將 ip 和 port 所指定的節點加入到集羣其中。讓它成爲集羣的一份子。 cluster forget <node_id> 從集羣中移除 node_id 指定的節點。 cluster replicate <node_id> 將當前節點設置爲 node_id 指定的節點的從節點。 cluster SAVECONFIG 將節點的配置文件保存到硬盤裏面。 ## 槽(slot) cluster ADDSLOTS <slot> [slot ...] 將一個或多個槽(slot)指派(assign)給當前節點。 cluster DELSLOTS <slot> [slot ...] 移除一個或多個槽對當前節點的指派。 cluster FLUSHSLOTS 移除指派給當前節點的所有槽,讓當前節點變成一個沒有指派不論什麼槽的節點。 cluster SETSLOT <slot> NODE <node_id> 將槽 slot 指派給 node_id 指定的節點,假設槽已經指派給還有一個節點。那麼先讓還有一個節點刪除該槽>,而後再進行指派。 cluster SETSLOT <slot> MIGRATING <node_id> 將本節點的槽 slot 遷移到 node_id 指定的節點中。 cluster SETSLOT <slot> IMPORTING <node_id> 從 node_id 指定的節點中導入槽 slot 到本節點。 cluster SETSLOT <slot> STABLE 取消對槽 slot 的導入(import)或者遷移(migrate)。 ## 鍵(key) cluster KEYSLOT <key> 計算鍵 key 應該被放置在哪一個槽上。 cluster COUNTKEYSINSLOT <slot> 返回槽 slot 眼下包括的鍵值對數量。 cluster GETKEYSINSLOT <slot> <count> 返回 count 個 slot 槽中的鍵
上面那些介紹的是redis集羣的搭建,一步一步成功的,可是上面每次都要啓動服務的命令是否是很不爽,爲啥我不把它作成window服務,讓他們隨系統自啓動呢。linux也能夠作成自啓動的哦。單節點的redis作成自啓動能夠參考 window下把redis發佈成服務
下面我介紹:把啓動命令作成服務:
# 發佈成服務(這些命令要到各redis文件夾下去執行。若是你們嫌麻煩,可使用絕對路徑,在命令行就都幹了)
redis-server.exe --service-install redis7771.conf --service-name redis7771
redis-server.exe --service-install redis7772.conf --service-name redis7772
redis-server.exe --service-install redis7773.conf --service-name redis7773
redis-server.exe --service-install redis7774.conf --service-name redis7774
redis-server.exe --service-install redis7775.conf --service-name redis7775
redis-server.exe --service-install redis7776.conf --service-name redis7776
#服務啓動
redis-server.exe --service-start --service-name redis7771
redis-server.exe --service-start --service-name redis7772
redis-server.exe --service-start --service-name redis7773
redis-server.exe --service-start --service-name redis7774
redis-server.exe --service-start --service-name redis7775
redis-server.exe --service-start --service-name redis7776
# 中止服務
redis-server.exe --service-stop --service-name redis7771
redis-server.exe --service-stop --service-name redis7772
redis-server.exe --service-stop --service-name redis7773
redis-server.exe --service-stop --service-name redis7774
redis-server.exe --service-stop --service-name redis7775
redis-server.exe --service-stop --service-name redis7776
# 刪除服務
redis-server.exe --service-uninstall --service-name redis7771
redis-server.exe --service-uninstall --service-name redis7772
redis-server.exe --service-uninstall --service-name redis7773
redis-server.exe --service-uninstall --service-name redis7774
redis-server.exe --service-uninstall --service-name redis7775
redis-server.exe --service-uninstall --service-name redis7776
就這樣,之後頻繁的啓動redis服務就能夠在window服務中進行了。不用再去敲命令了
http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
下載後,雙擊安裝便可,一樣,爲了操做方便,也是建議安裝在盤符根目錄下,如: C:\Ruby22-x64 ,安裝時這裏選中後兩個選項,
意思是將ruby添加到系統的環境變量中,在cmd命令中能直接使用ruby的命令
https://rubygems.org/gems/redis/versions/3.2.2
注意:下載在頁面右下角相關鏈接一項中
安裝該驅動,命令以下:
gem install --local path_to_gem/filename.gem
實際操做以下:
https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb
打開該連接若是沒有下載,而是打開一個頁面,那麼將該頁面保存爲redis-trib.rb
建議保存到Redis的目錄下。
注意:由於redis-trib.rb是ruby代碼,必須用ruby來打開,若redis-trib.rb沒法識別,須要手動選擇該文件的打開方式:
我搭建的redis-cluster的文件夾,也分享給你們: 連接:https://pan.baidu.com/s/1fHYkiSW1xYh9eRYZBWuSaQ 密碼:ni7z 這裏面的文件只是到上述的準備工做,集羣的配置都被我刪除了。不會的能夠跟着上述步驟再走一遍就會了