在Redis2.0時代,采用Sentinel工具來監控各Master的狀態,現在redis3.0已經支持集群的容錯功能,現在筆者就簡單記錄一下搭建集群過程中遇到的一些問題,以及解決方法。
軟件 | 版本 | 備注 |
---|---|---|
centOS | 6.6 | 位于虛擬機vmWare |
redis | 3.0.2 | 采用源碼安裝,make & make install |
ruby | 2.2.7 (revision 58194) | yum原生會安裝2.0.0版本,并且默認這是最新版本,這并不能滿足要求 |
gem | 2.4.5.2 |
首先,安裝redis,此處采用源碼安裝,wget http://download.redis.io/releases/redis-3.0.2.tar.gz
解壓進入源碼文件夾,執行./configure-->make-->make install即可
注意如果機器上有舊版redis殘留,記得先執行yum remove redis操作;
第二步,安裝ruby
先執行ruby -v,如果是2.0版本以下,請更新版本。因為redis 3.0的高級功能依賴ruby2.2以上版本。
執行wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
解壓進入源碼文件夾,執行./configure-->make-->make install即可;
第三步,安裝gem
一般而言gem已經自帶,如果gem -v沒有正確的版本,請執行 yum install gem即可
第四步,gem安裝redis
注意是安裝rubygem支持redis的插件,此處是比較容易錯的地方。
執行gem install redis命令
如果爆出:
ERROR: Loading command: install (LoadError)
no such file to load -- zlib
說明缺少zlib,但奇怪的是zlib應該是安裝好的,此時,需要進入ruby的源碼,手動執行zlib
進入ruby源碼包的/ext/zlib 目錄下,這里,執行make & make install命令
再度執行gem install redis命令
此時,應該會出現新的錯誤:
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
說明OpenSSL沒有,但同樣奇怪的是openssl應該也是安裝好的,此時,仍然進入ruby源碼的/ext/openssl
此時,如果直接執行make,會爆出:
ruby No rule to make target `/include/ruby.h'字樣的錯誤,提示缺少頭文件
此時,vi Makefile,在頭部聲明中,添加
top_srcdir = ../..
再次執行./configure-->make-->make install即可;
OK,環境配置完畢,進入正式的集群搭建。
- 創建一個文件夾redis-cluster,然后在其下面分別創建6個文件夾如下:
(1)mkdir -p /usr/local/redis-cluster
(2)mkdir 7001、mkdir 7002、mkdir 7003、mkdir 7004、mkdir 7005、mkdir 7006
2.把之前的redis.conf配置文件分別copy到700下,進行修改各個文件內容,也就是對700下的每一個copy的redis.conf文件進行修改!如下:
(1)daemonize yes
(2)port 700(分別對每個機器的端口號進行設置)
(3)bind 192.168.72.128(必須要綁定當前機器的ip)
(4)dir /usr/local/redis-cluster/700/(指定數據文件存放位置,必須要指定不同的目錄位置,不然會丟失數據)
(5)cluster-enabled yes(啟動集群模式)
(6)cluster-config-file nodes700*.conf(這里700x最好和port對應上)
(7)cluster-node-timeout 5000
(8)appendonly yes
3.注意每個文件要修改端口號,bind的ip,數據存放的dir,并且nodes文件都需要進行修改!
4.分別啟動6個redis實例,然后檢查是否啟動成功
(1)redis-server /usr/local/redis-cluster/700*/redis.conf
(2)ps -el | grep redis 查看是否啟動成功
5.從源碼包里面找到redis-trib.rb,推薦拷貝到外面(例如usr/local/redis-cluster),在目錄下執行
./redis-trib.rb create --replicas 1 192.168.72.128:7001 192.168.72.128:7002 192.168.72.128:7003 192.168.72.128:7004 192.168.72.128:7005 192.168.72.128:7006
此處即將6臺redis按照1:1的主從關系建立集群
6.輸入redis-cli -c -h 192.168.72.128 -p 700* 可以登錄任意節點查看
輸入redis-cli -c -h 192.168.1.171 -p 700* shutdown可以關閉節點