在Redis2.0時(shí)代,采用Sentinel工具來監(jiān)控各Master的狀態(tài)寿冕,現(xiàn)在redis3.0已經(jīng)支持集群的容錯(cuò)功能便监,現(xiàn)在筆者就簡(jiǎn)單記錄一下搭建集群過程中遇到的一些問題,以及解決方法危喉。
軟件 | 版本 | 備注 |
---|---|---|
centOS | 6.6 | 位于虛擬機(jī)vmWare |
redis | 3.0.2 | 采用源碼安裝,make & make install |
ruby | 2.2.7 (revision 58194) | yum原生會(huì)安裝2.0.0版本州疾,并且默認(rèn)這是最新版本辜限,這并不能滿足要求 |
gem | 2.4.5.2 |
首先,安裝redis严蓖,此處采用源碼安裝薄嫡,wget http://download.redis.io/releases/redis-3.0.2.tar.gz
解壓進(jìn)入源碼文件夾,執(zhí)行./configure-->make-->make install即可
注意如果機(jī)器上有舊版redis殘留颗胡,記得先執(zhí)行yum remove redis操作毫深;
第二步,安裝ruby
先執(zhí)行ruby -v毒姨,如果是2.0版本以下哑蔫,請(qǐng)更新版本。因?yàn)閞edis 3.0的高級(jí)功能依賴ruby2.2以上版本弧呐。
執(zhí)行wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
解壓進(jìn)入源碼文件夾鸳址,執(zhí)行./configure-->make-->make install即可;
第三步泉懦,安裝gem
一般而言gem已經(jīng)自帶,如果gem -v沒有正確的版本疹瘦,請(qǐng)執(zhí)行 yum install gem即可
第四步崩哩,gem安裝redis
注意是安裝rubygem支持redis的插件,此處是比較容易錯(cuò)的地方。
執(zhí)行g(shù)em install redis命令
如果爆出:
ERROR: Loading command: install (LoadError)
no such file to load -- zlib
說明缺少zlib邓嘹,但奇怪的是zlib應(yīng)該是安裝好的酣栈,此時(shí),需要進(jìn)入ruby的源碼汹押,手動(dòng)執(zhí)行zlib
進(jìn)入ruby源碼包的/ext/zlib 目錄下矿筝,這里,執(zhí)行make & make install命令
再度執(zhí)行g(shù)em install redis命令
此時(shí)棚贾,應(yīng)該會(huì)出現(xiàn)新的錯(cuò)誤:
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
說明OpenSSL沒有窖维,但同樣奇怪的是openssl應(yīng)該也是安裝好的,此時(shí)妙痹,仍然進(jìn)入ruby源碼的/ext/openssl
此時(shí)铸史,如果直接執(zhí)行make,會(huì)爆出:
ruby No rule to make target `/include/ruby.h'字樣的錯(cuò)誤怯伊,提示缺少頭文件
此時(shí)琳轿,vi Makefile,在頭部聲明中耿芹,添加
top_srcdir = ../..
再次執(zhí)行./configure-->make-->make install即可崭篡;
OK,環(huán)境配置完畢吧秕,進(jìn)入正式的集群搭建琉闪。
- 創(chuàng)建一個(gè)文件夾redis-cluster,然后在其下面分別創(chuàng)建6個(gè)文件夾如下:
(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下,進(jìn)行修改各個(gè)文件內(nèi)容绽淘,也就是對(duì)700下的每一個(gè)copy的redis.conf文件進(jìn)行修改涵防!如下:
(1)daemonize yes
(2)port 700(分別對(duì)每個(gè)機(jī)器的端口號(hào)進(jìn)行設(shè)置)
(3)bind 192.168.72.128(必須要綁定當(dāng)前機(jī)器的ip)
(4)dir /usr/local/redis-cluster/700/(指定數(shù)據(jù)文件存放位置,必須要指定不同的目錄位置沪铭,不然會(huì)丟失數(shù)據(jù))
(5)cluster-enabled yes(啟動(dòng)集群模式)
(6)cluster-config-file nodes700*.conf(這里700x最好和port對(duì)應(yīng)上)
(7)cluster-node-timeout 5000
(8)appendonly yes
3.注意每個(gè)文件要修改端口號(hào)壮池,bind的ip,數(shù)據(jù)存放的dir杀怠,并且nodes文件都需要進(jìn)行修改椰憋!
4.分別啟動(dòng)6個(gè)redis實(shí)例,然后檢查是否啟動(dòng)成功
(1)redis-server /usr/local/redis-cluster/700*/redis.conf
(2)ps -el | grep redis 查看是否啟動(dòng)成功
5.從源碼包里面找到redis-trib.rb赔退,推薦拷貝到外面(例如usr/local/redis-cluster)橙依,在目錄下執(zhí)行
./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臺(tái)redis按照1:1的主從關(guān)系建立集群
6.輸入redis-cli -c -h 192.168.72.128 -p 700* 可以登錄任意節(jié)點(diǎn)查看
輸入redis-cli -c -h 192.168.1.171 -p 700* shutdown可以關(guān)閉節(jié)點(diǎn)