Redis3 0 6集群搭建

2021-07-11 22:11:18 字數 4286 閱讀 7571

建立乙個rediscluster之前,我們需要有一些以cluster模式執行的redis例項,這是因為cluster模式下redis例項將會開啟cluster的特徵和命令。

現在我有2臺vbox搭建的centos6虛擬機器【centos1(192.168.56.101)和centos2(192.168.56.102)】,準備在此上搭建redis集群。

由於最小的redis集群需要3個master節點,本次測試使用另外3個節點作為備份的節點(replicas),於是此次搭建需要6個redis例項。由於可在同一臺機器上執行多個redis例項,因此我將在centos1上執行以下例項:

192.168.56.101:7000

192.168.56.101:7001

192.168.56.101:7002

並在centos2上執行以下例項:

192.168.56.102:7003

192.168.56.102:7004

192.168.56.102:7005

2. 安裝redis

tar zxvf redis-3.0.6.tar.gz

cd redis-3.0.6

make

make install

安裝完成後,redis-3.0.6/src資料夾下會出現redis-server、redis-cli等可執行檔案,稍後將使用。

3. 修改配置檔案

由於需要在centos1上執行多個例項,為了便於管理,在centos1上建立/home/user/software/redis-cluster資料夾,並分別建立7000、7001和7002這三個子資料夾:

然後分別拷貝redis-3.0.6/redis.conf到這三個子資料夾中。redis.conf是redis伺服器啟動的必要配置檔案,分別在這幾個資料夾中開啟該檔案,修改以下選項(這幾個選項是搭建redis集群的必須選項),其它的保持預設即可:

#注意每個子資料夾下的配置中,埠號不同

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

在redis.conf中,有對這些選項的詳細說明,這裡不贅述。

最後拷貝redis-3.0.6/src/redis-server檔案到這幾個子資料夾中。

4. 啟動redis

在這3個資料夾中分別啟動redis:

./redis-server redis.conf

可以通過程序命令來檢視啟動結果

從每個例項的啟動日誌(redis.conf檔案中的logfile選項可以配置日誌檔案)中,可以看到每乙個節點都給自己分配了乙個新的id:

這個id將被該redis例項作為集群中的唯一名字永久使用,節點之間會互相記住這個名字。

5. 建立集群

在建立redis集群前,在centos2機器中也需要按照步驟1~4完成相應的配置並執行redis例項。

現在centos1上的3個redis例項和centos2上的3個redis例項都已經啟動。目前這些例項雖然都開啟了cluster模式,但是彼此還不認識對方,接下來可以通過redis集群的命令列工具redis-trib.rb來完成集群建立。redis-trib.rb是乙個ruby寫的可執行程式,它可以完成建立集群、為已存在的集群重新分片等功能。

而要想執行ruby程式,則需要系統先安裝ruby執行環境:

sudo yum install ruby
接下來執行以下命令(在centos1和centos2上執行均可):

./redis-trib.rb create --replicas 1 \

192.168.56.101:7000 192.168.56.101:7001 192.168.56.101:7002 \

192.168.56.102:7003 192.168.56.102:7004 192.168.56.102:7005

此時會遇到以下問題:

提示缺少rubygems元件,可以使用yum來安裝該元件:

sudo yum -y install rubygems
再次執行建立redis集群的命令,還會報以下錯誤:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (loaderror)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

from ./redis-trib.rb:25

搜尋了一下,是因為缺少redis的ruby介面,可以通過以下命令安裝:

接下來再次執行建立redis集群的命令:

上圖中:

create為redis-trib.rb指令碼的子命令,表示建立redis集群

--replicas 1表示建立的集群有1套資料備份

後面的引數為多個redis例項位址,表示使用那些例項來建立節點

在本次測試中,有7000~7005共6個節點,很顯然會有3個master和3個replica。從上圖中可以看到,埠號為7000、7003和7004的三個節點被選為master,另外三個節點則成為replica。而下圖則展示了redis的16384個槽在三個master節點上的分布情況:

6. 測試集群

redis目前的客戶端實現並不多,接下來我們用自帶的redis-cli工具來測試搭建好的集群。

最簡單的測試集群是使用redis-cli連線上redis後使用cluster命令:

cluster info,檢視集群資訊:

cluster nodes:檢視集群中的節點資訊:

下面使用redis-cli工具進行資料的讀寫操作:

開始連線redis的時候沒有加入-c選項,則只能在該節點上訪問,舉個例子:上圖中一開始我登入的是7002埠的redis例項,然後

set i 0
這一句給i設定值為0,經集群計算後,這個i應該落在15759這個slot中,這個slot又在7004這個redis例項上,於是準備跳轉到7004的redis例項上,由於沒有開啟集群模式,這次跳轉失敗了,值也就沒有寫進redis。

第二次連線的還是7002,但這一次使用-c選項開啟了集群模式,後續的訪問不管落在哪乙個節點上,都能跳轉過去並正確的讀寫。藍色方框的變化展示了連線跳轉的過程,redis集群中的讀寫都會發生在指定的slot上,因此都會發生相應的跳轉。

另外,由於每個節點都會記住集群中其他節點的名字以及資料槽的分布情況,我們可以開啟每個redis例項的資料夾檢視其nodes.conf(redis.conf檔案中的cluster-config-file選項來配置)檔案,檔案內容大致相同,僅僅是節點列表的順序不同而已。

來自:

redis3 0 6安裝配置

yum install gcc c y 安裝gcc mkdir p usr local redis 建立安裝資料夾 tar zxvf redis 3.0.6.tar.gz 解壓redis檔案 cd redis 3.0.6 進入解壓後的資料夾 make 編譯 make prefix usr local...

Redis3 0 集群搭建

redis3.0 部僅提供了哨兵監控,熱切換,還提供了集群解決方案,接下來簡單的搭建redis3.0集群 1 新建三個redis server例項,我們可以將redis.conf分別copy到7001,7002,7003的資料夾中,並修改相應的配置 vi redis3.0 instance 7001...

REDIS 4 集群搭建

redis 4 集群搭建 wget tar xzf redis 4.0.10.tar.gz cd redis 4.0.10 make make install 2.安裝ruby及ruby執行使用的包 yum install y ruby rubygems 3.修改配置檔案 redis.conf 主要...