1. 程式人生 > >Redis教程(十)如何搭建Redis叢集

Redis教程(十)如何搭建Redis叢集

Redis叢集搭建

環境: 

  • CentOS 7.0
  • 6臺redis,埠號分別分配為7001、7002、7003、7004、7005、7006
  • 設定7001、7002、7003為主機,7004、7005、7006分別依次為從機。

1、  在Linux中建立cluster-redis目錄(名字自己指定)

   a) 複製6個redis的bin目錄,配置其中的redis.conf(要是沒有就從redis解壓目錄中複製一份),

      將配置檔案中cluster-enable    yes

   b) 依次修改port

   c) 修改防火牆策略,允許7001~7006埠通過

2、  將6個redis全部開啟(這裡可以編寫指令碼控制開啟和關閉)

開啟6個redis指令碼:

cd 7001
./redis-server redis.conf
cd ..
cd 7002
./redis-server redis.conf
cd ..
cd 7003
./redis-server redis.conf
cd ..
cd 7004
./redis-server redis.conf
cd ..
cd 7005
./redis-server redis.conf
cd ..
cd 7006
./redis-server redis.conf
cd..
關閉6個redis指令碼: 
cd 7001
./redis-cli -p 7001 shutdown
cd ..
cd 7002
./redis-cli -p 7002 shutdown
cd ..
cd 7003
./redis-cli -p 7003 shutdown
cd ..
cd 7004    
./redis-cli -p 7004 shutdown
cd ..      
cd 7005   
./redis-cli -p 7005 shutdown
cd ..        
cd 7006
./redis-cli -p 7006 shutdown
cd .. 

3、  安裝ruby環境

因為叢集管理工具(redis-trib.rb)是使用ruby指令碼語言編寫的。

注意:redis版本和ruby版本不匹配經常會導致叢集無法建立成功;我使用的是redis4.0.9,之前通過yum方式安裝的是預設ruby2.0.0,建立時老是叢集報錯!最後升級ruby為2.4.1,就可以成功建立叢集了。

4、  通過在redis.4.0.9解壓目錄下的src中找到redis-trib.rb,移動至redis-cluster目錄下,執行命令:./redis-trib.rbcreate --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004127.0.0.1:7005  127.0.0.1:7006

      開始建立叢集


出現如下資訊說明叢集搭建成功:


5、  連線叢集

隨便進入一個redis目錄,如進入7001目錄,執行。./redis-cli –h 127.0.0.1 –p 7001 –c

-c指的連線方式是叢集連線。


表明叢集已經搭建成功!

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


遇到的問題:

1、我安裝的是redis4.0.9,若是ruby版本過低,在搭建叢集的時候會報錯;因此我使用的是ruby2.4.1,親測可用.

2、在搭建叢集時出現Waiting for the cluster to join...一直等待問題,查資料解決辦法:redis叢集不僅需要開通redis客戶端連線的埠,而且需要開通叢集匯流排埠,叢集匯流排埠為redis客戶端連線的埠 + 10000;如redis埠為6379,則叢集匯流排端 口為16379;

3、在叢集建立失敗時,要停止各個redis程序,然後把各個redis目錄的持久化檔案、nodes.conf檔案全部清除掉;之後重新開啟各個redis程序,再輸入命令建立叢集,一般就能成功