redis集羣環境搭建-Linux

大家看這個之前可以先看我的單機版安裝,因爲我是在那個條件下繼續弄這個集羣的,

首先看一下集羣架構圖:(網上應該也有)


架構細節:
(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.
(2)節點的fail是通過集羣中超過半數的節點檢測失效時才生效.
(3)客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連接集羣所有節點,連接集羣中任何一個可用節點即可
(4)redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value(節點-哈希槽-值)

疑問:集羣,那麼每個節點上的數據都是不一樣的那麼通過什麼來區分呢,slot(槽的概念)。

Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點。

 redis-cluster投票:容錯:沒有備用庫的情況


(1)如何判斷某個節點是否有效?

判斷集羣中某個節點是否可用是所有的節點參與投票的過程,如果是半數以上的主節點向某一個節點發送ping命令沒有收到回覆的話,就會認爲當前節點已經掛掉。


(2)什麼時候整個集羣不可用(cluster_state:fail),也就是整個集羣狀態爲fail ? 

    如果集羣任意主節點掛掉,且當前主節點沒有備用節點.集羣進入fail狀態,也可以理解成集羣的哈希槽映射[0-16383]不完成時進入fail狀態。

  如果集羣超過半數以上主節點掛掉,無論是否有備用節點。集羣進入fail狀態。

  ps:當集羣不可用時,所有對集羣的操作做都不可用,客戶端會收到((error) CLUSTERDOWN The cluster is down)錯誤。

集羣的搭建:(三個節點),每個節點有一個主節點一個備用節點=》一共六個節點

我這裏就使用六個redis實例來做:

1):先決條件:ruby腳本

redis集羣管理工具redis-trib.rb依賴ruby環境,首先需要安裝ruby環境:
安裝ruby命令:
yum install ruby

yum install rubygems

下面看我的截圖安裝目錄:這個/usr/local/redis/bin目錄下我之前安裝着一個redis單機版,所以我們把腳本環境都安裝到這個目錄下面


上面兩個命令都運行成功之後截圖如下:


接下來,安裝redis集羣管理工具依賴包。

腳本下載地址:https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem 

使用sftp協議,拷貝redis-3.x.x.gem至/usr/local下如下圖:



以上我們可以得知上傳成功,

  執行:gem install /usr/local/redis-3.x.x.gem進行安裝,如下圖:


集羣管理工具ruby腳本的位置;


我們把它複製到到/usr/local目錄下:cp ./redis-trib.rb /usr/local


實例複製


刪除不相關文件並修改配置,以第一個實例爲列:



vi redis.conf,修改內容

1)端口號:7001-7006


2)刪除註釋;如下圖 刪除# 註釋


:wq保存並退出編輯,下面幾個實例都是一樣的操作,端口不同而已。

3)拷貝集羣管理腳本:如下圖,用起來更方便。


4)啓動實例:創建腳本啓動

命令:vi startall.sh

然後i進入編輯模式

內容如下:


然後:wq保存並退出


指定執行權限 chmod +x statrall.sh

啓動./startall.sh 如下圖:


5):創建集羣

命令:注意你自己的ip地址

./redis-trib.rb create --replicas 1192.168.1.254:7001 192.168.1.254:7002 192.168.1.254:7003 192.168.1.254:7004 192.168.1.254:7005 192.168.1.254:7006



6):集羣測試

redis01/redis-cli -h 192.168.1.254 -p 7002 -c

解釋一下:-h 任何一個redis下都有一個客戶端我們可以任意進一個  

                -p 選擇一個ip地址

                 -c 表示我們需要鏈接集羣


上面可以看到鏈接的7002數據到了7003 所以證明成功了。

關閉指定redis服務器命令;



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