Linux(Centos7)Redis叢集的搭建

hjkl_uiop發表於2020-10-08

Redis叢集的搭建

叢集中有三個節點的叢集,每個節點有一主一從。需要6臺虛擬機器。
搭建一個偽分散式的叢集,需要使用6個redis例項來模擬

  1. 開發環境的搭建
    搭建環境需要使用官方提供的ruby指令碼。因此需要安裝ruby的環境。
  2. 安裝ruby
    redis叢集管理工具redis-trib.rb依賴ruby環境,首先需要安裝ruby環境:

安裝ruby

yum install ruby
yum install rubygems

安裝ruby和redis的介面程式
拷貝redis-3.0.0.gem至(指定的目錄下面) 例如(/usr/local)下
注:redis-3.0.0.gem這個檔案是需要自己下載的
執行:

gem install /usr/local/redis-3.0.0.gem
  1. 叢集節點的規劃
    這裡在同一臺伺服器用不同的埠表示不同的redis伺服器,如下:
    語法:ip地址:埠(檢視ip地址的命令為ifconfig)
    主節點:192.168.152.130 :7001192.168.152.130 :7002 192.168.152.130 :7003
    從節點:192.168.152.130 :7004 192.168.152.130 :7005 192.168.152.130 :7006
    在/usr/local下建立redis-cluster目錄,其下建立7001、7002。。7006目錄,如下:

在這裡插入圖片描述
操作方法,就是將單機版本的bin目拷貝到redis-clusster下面
注意:拷貝完畢之後要移除快照dump.rdb

將redis安裝目錄bin下的檔案拷貝到每個700X目錄內,同時將redis原始碼目錄src下的redis-trib.rb拷貝到redis-cluster目錄下。

修改每個700X目錄下的redis.conf配置檔案:
在這裡插入圖片描述

port XXXX
在這裡插入圖片描述

bind 192.168.152.130 (ip地址)
在這裡插入圖片描述

cluster-enabled 改為yes
在這裡插入圖片描述

  1. 啟動每一個節點
    採用指令碼的方式來啟動6個redis例項
    命令:vim startall.sh
cd redis01
./redis-server redis.conf
cd ../
cd redis02
./redis-server redis.conf
cd ../
cd redis03
./redis-server redis.conf
cd ../
cd redis04
./redis-server redis.conf
cd ../
cd redis05
./redis-server redis.conf
cd ../
cd redis06
./redis-server redis.conf

執行指令碼命令:

chmod +x startall.sh
  1. 執行建立叢集命令
    執行redis-trib.rb,此指令碼是ruby指令碼,它依賴ruby環境。
./redis-trib.rb create --replicas 192.168.152.130:7001 192.168.152.130:7002 192.168.152.130:7003 192.168.152.130:7004 192.168.152.130:7005  192.168.152.130:7006

在這裡插入圖片描述
說明:redis叢集至少需要3個主節點,每個主節點有一個從節點總共6個節點
replicas指定為1表示每個主節點有一個從節點

注意:
如果執行時報如下錯誤:
[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解決方法是刪除生成的配置檔案nodes.conf,如果不行則說明現在建立的結點包括了舊叢集的結點資訊,需要刪除redis的持久化檔案後再重啟redis,比如:appendonly.aof、dump.rdb

  1. 測試
    叢集建立成功登陸任意redis結點查詢叢集中的節點情況。
    客戶端以叢集方式登陸:
    在這裡插入圖片描述
    說明:
    ./redis-cli -c -h 192.168.152.130 -p 7001 ,其中-c表示以叢集方式連線redis,-h指定ip地址,-p指定埠號
    cluster nodes 查詢叢集結點資訊

cluster info 查詢叢集狀態資訊

  1. 關閉叢集
    可以編寫一個redis叢集的關閉指令碼
vim stopall.sh
redis01/redis-cli -c -h 192.168.152.130 -p 7001 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7002 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7003 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7004 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7005 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7006 shutdown
chmod +x stopall.sh

相關文章