redis介紹 (8) window 下redis的集羣(cluster命令)

前言:

  前段時間我在centos上搭建過一次redis集羣,那是藉助ruby搭建,此次我介紹一種純redis集羣命令的方式去搭建【最後我會簡單介紹ruby搭建】。html

 redis集羣搭建(三主三備):

  準備工做:

    第一步:下載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)
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集羣升級:

   上面那些介紹的是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服務中進行了。不用再去敲命令了


ruby安裝:

  

2.下載並安裝ruby

  2.1. 下載路徑以下:

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

      下載後,雙擊安裝便可,一樣,爲了操做方便,也是建議安裝在盤符根目錄下,如: C:\Ruby22-x64 ,安裝時這裏選中後兩個選項,

  意思是將ruby添加到系統的環境變量中,在cmd命令中能直接使用ruby的命令

    

   2.2.下載ruby環境下Redis的驅動,考慮到兼容性,這裏下載的是3.2.2版本

  https://rubygems.org/gems/redis/versions/3.2.2

      注意:下載在頁面右下角相關鏈接一項中

           

      安裝該驅動,命令以下:

gem install --local path_to_gem/filename.gem  

       實際操做以下:

    

      2.3.下載Redis官方提供的建立Redis集羣的ruby腳本文件redis-trib.rb,路徑以下:

    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    這裏面的文件只是到上述的準備工做,集羣的配置都被我刪除了。不會的能夠跟着上述步驟再走一遍就會了

相關文章
相關標籤/搜索