1. 程式人生 > >Redis叢集搭建(3主3從)

Redis叢集搭建(3主3從)

Redis3.0開始支援叢集,在每個Master上存放的資料可各不相同,即分散式儲存的思想。叢集中的每個節點都需要知道叢集中自己之外的其它節點,這些需要在每個Redis節點的nodes-6379.conf中體現,該檔案是叢集建立後自動設定的,不需要手動修改。

本文中節點個數為6個,3個Master,每個Master存在一個Slave從節點。這6個節點的IP分別為:

192.168.0.203、192.168.0.204、192.168.0.205、192.168.0.206、192.168.0.207、192.168.0.208

需要修改叢集中各個節點的redis.conf檔案,下面以192.168.0.203上的redis配置檔案為例進行說明:

daemonize yes   設定為後臺啟動


port  6379   埠號,可以根據需要進行修改

bind 192.168.0.203    綁定當前機器的ip


dir  /usr/local/redis/etc/   指定資料檔案存放的位置

cluster-enabled  yes   開啟叢集模式


cluster-config-file nodes-6379.conf     每一個叢集節點都需要一個不同的叢集配置檔案


appendonly yes   開啟aof

appendfilename “appendonly.aof”    指定aof檔名


yum install ruby  安裝ruby,Redis叢集需要使用ruby指令


yum install rubygems   


gem install redis  

由於centos支援的ruby預設版本到2.0.0,因此需要安裝RVM即Ruby的版本管理器


curl是一個檔案傳輸工具,支援檔案的上傳和下載。

下載RVM

curl -L get.rvm.io | bash -s stable 

curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -


GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.29.3.tgz' - 'https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.asc'! Try to install GPG v2 and then fetch the public key:

NOTE: GPG version 2.1.17 have a bug which cause failures during fetching keys from remote server. Please downgrade or upgrade to newer version (if available) or use the second method described above.

curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -

執行rvm指令碼

source /usr/local/rvm/scripts/rvm

檢視已知的ruby版本

rvm list known


安裝ruby2.4.1版本

rvm install 2.4.1


檢視rvm指令的幫助資訊


切換到指定的ruby版本

rvm use 2.4.1

移除之前安裝的1.8.7版本

rvm remove 1.8.7


分別啟動6個節點中的Redis服務

在redis的安裝目錄src中,執行redis-trib.rb命令,redis-trib.rb是redis叢集操作的指令碼。首先檢視它的幫助資訊。

./redis-trib.rb help


./redis-trib.rb create --replicas 1 192.168.0.203:6379 192.168.0.204:6379 192.168.0.205:6379 192.168.0.206:6379 192.168.0.207:6379 192.168.0.208:6379

 

錯誤資訊:[ERR] Node 192.168.0.203:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

在啟動各個節點的redis之前,需要在各個節點使用redis-cli進入指定的redis服務並執行flushall,把各個節點中的資料清空。刪除appendonly.aof、dump.rdb,同時將每個節點中的叢集配置檔案nodes-6379.conf刪除。如下圖:


分別重新啟動6個節點中的Redis服務再次嘗試執行下面指令

./redis-trib.rb create --replicas 1 192.168.0.203:6379 192.168.0.204:6379 192.168.0.205:6379 192.168.0.206:6379 192.168.0.207:6379 192.168.0.208:6379



--replicas 1  這個1=主節點個數/從節點個數      上述6個節點中,前3個是主節點 , 後3個是從節點。

主:192.168.0.203     從:192.168.0.206

主:192.168.0.204     從:192.168.0.207

主:192.168.0.205     從:192.168.0.208

若想重新建立叢集,可以將6個節點中的nodes-6379.conf刪掉,然後重新執行建立叢集的指令即可。