1. 程式人生 > >多臺主機搭建redis叢集

多臺主機搭建redis叢集

之前在一臺主機上搭建好了一個叢集環境(192.168.187.226)就是基本的7000、7001、7002、7003、7004、7005,現在 想在192.168.187.227上部署一個redis伺服器port:7006新增進之前搭好的叢集。其實後來我測試功能及其儲存方式,主從關係等是在三臺主機上玩的。這裡以完全新手的角度介紹叢集的基本安裝流程和遇到的問題和如何在多臺主機上搭建環境。

1.      將redis3.0版本在/usr/local目錄下解壓安裝

2.      刪除壓縮檔案,將解壓的檔案移動至/usr/local/redis3.0方便管理

3.      在redis3.0目錄下使用make &&make install

4.      將/usr/local/bin裡的redis-server拷貝至/usr/sbin裡(如果不這樣做的話可能會顯示錯誤/usr/sbin/redis-server找不到)

5.      在local目錄下建立一個叢集目錄/cluster/7006將redis.conf拷貝進去

6.      將redis.conf配置檔案裡面的如下內容修改

port 7006

daemonize yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

7.當前目錄執行redis-server redis.conf

8.  查詢執行狀態

如下是一臺主機(192.168.187.227)redis伺服器執行狀態


如下是另一臺主機(192.168.187.226)的redis伺服器執行狀態(之前已經配好了)


9利用/usr/local/redis3.0/src 裡的redis-trib.rb來執行建立叢集的命令例如

./redis-tril.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001.......127.0.0.1:7006建立7000到7006的叢集

執行以上命令會提示如下錯誤,缺少ruby環境


Yum install ruby安裝

再次執行建立叢集命令,發現還有錯誤,缺少rubygems元件


繼續安裝  yum install rubygems

再次執行建立叢集命令,依然有錯誤不能載入redis,沒有redis和ruby的介面


再安裝

Gem install redis


10,以上問題都解決後,命令正常執行但是會出現連線不上127.0.0.1:7006的情況(因為是兩臺主機,繫結本地到本地的ip當然不行啦)

(以上操作都是192.168.187.227redis的部署步驟流程)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

(以下是修改兩臺主機redis伺服器ip到相應主機ip的操作,使其可以多臺主機建立叢集)

原因是伺服器繫結的IP都是本地的ip,這時候要想辦法把兩邊redis的ip都改成主機的ip

(我的是192.168.187.226和192.168.187.227)

首先把192.168.187.226裡配置好的叢集ip都修改過來

11. 還是要在配置檔案中修改redis.conf裡的bind 127.0.0.1修改成192.168.187.226(另一邊也是這樣修改)

12 此時繫結伺服器的ip改過來了

客戶端連線也要指定ip了 redis-cli–c –h 192.168.187.226 –p 7000類似這樣(指定ip和port的方式連線)

(另一邊一樣修改過來)

13另一邊主機上的redis按照如此方法修改完成後,使用新增節點的方法加進來還是這個命令

./redis-tril.rb add-node 192.168.187.226:7006 192.168.187.227:7000(7000-7006已經是一個叢集了,這時候只能採取新增方式)

14檢視叢集情況


可以看到四個master和三個slave 新加進來的7006是master 但是木有slot

7006需要雜湊槽的話需要分配。


總結:其實在一臺主機上完成搭建叢集之後,在多臺主機上搭建叢集的思路就基本明白了。無非是把redis伺服器的ip繫結為對應主機的IP,不這樣怎麼可能connect上呢。測試資訊總結在下一篇部落格裡。