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程序,再輸入命令建立叢集,一般就能成功