Redis3.x-叢集搭建
今天咱們來搭建一下Redis叢集,要讓叢集正常工作至少需要3個主節點,在這裡我們要建立6個redis節點,其中三個為主節點,三個為從節點,對應的redis節點的ip和埠對應關係如下。
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
127.0.0.1:7004
127.0.0.1:7005
1:下載redis。官網下載3.0.0版本,之前2.幾的版本不支援叢集模式
2:上傳伺服器,解壓,編譯
tar -zxvf redis-3.0.0-rc2.tar.gz
mv redis-3.0.0-rc2.tar.gz redis3.0
cd /usr/local/redis3.0
Make
make install
3:建立叢集需要的目錄
mkdir -p /usr/local/cluster
cd /usr/local/cluster
mkdir 7000
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
[root@localhost redis]# cp -rf /usr/local/redis/bin/* /usr/local/rediscluster/7000
[root@localhost redis]# cp -rf /usr/local/redis/bin/* /usr/local/rediscluster/7001
[root@localhost redis]# cp -rf /usr/local/redis/bin/* /usr/local/rediscluster/7002
[root@localhost redis]# cp -rf /usr/local/redis/bin/* /usr/local/rediscluster/7003
[root@localhost redis]# cp -rf /usr/local/redis/bin/* /usr/local/rediscluster/7004
[root@localhost redis]# cp -rf /usr/local/redis/bin/* /usr/local/rediscluster/7005
4:修改配置檔案redis.conf
cp /usr/local /redis3.0/redis.conf /usr/local/cluster
vi redis.conf
修改配置檔案中的下面選項
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
修改完redis.conf配置檔案中的這些配置項之後把這個配置檔案分別拷貝到7000/7001/7002/7003/7004/7005目錄下面
cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
注意:拷貝完成之後要修改7001/7002/7003/7004/7005目錄下面redis.conf檔案中的port引數,分別改為對應的資料夾的名稱
5:分別啟動這6個redis例項
cd /usr/local/cluster/7000
./redis-server redis.conf
cd /usr/local/cluster/7001
./redis-server redis.conf
cd /usr/local/cluster/7002
./redis-server redis.conf
cd /usr/local/cluster/7003
./redis-server redis.conf
cd /usr/local/cluster/7004
./redis-server redis.conf
cd /usr/local/cluster/7005
./redis-server redis.conf
啟動之後使用命令檢視redis的啟動情況
ps -ef|grep redis
如下圖顯示則說明啟動成功 :
6:執行redis的建立叢集命令建立叢集
cd /usr/local/redis3.0/src
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
6.1 執行上面的命令的時候會報錯,因為是執行的ruby的指令碼,需要ruby的環境
錯誤內容:/usr/bin/env: ruby: No such file or directory
所以需要安裝ruby的環境,這裡推薦使用yum install ruby安裝
解決方式:
yum install ruby
6.2然後再執行第6步的建立叢集命令,還會報錯,提示缺少rubygems元件,使用yum安裝
錯誤內容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
解決方式:
yum install rubygems
6.3再次執行第6步的命令,還會報錯,提示不能載入redis,是因為缺少redis和ruby的介面,使用gem 安裝
錯誤內容:
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./redis-trib.rb:25:in `<main>'
解決方式:
gem install redis
BUT, 執行上面的命令後發現並沒有什麼反應,由於國內網路原因(你懂的),導致 rubygems.org 存放在 Amazon S3 上面的資原始檔間歇性連線失敗。新增淘寶的gem源
解決方式:
[root@localhost src]# gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
https://ruby.taobao.org/ added to sources
https://rubygems.org/ removed from sources
[root@localhost src]#
[root@localhost src]# gem install redis
6.4 再次執行第6步的命令,正常執行
把127.0.0.1 改成實際ip
輸入yes,然後配置完成。
至此redis叢集即搭建成功!
7:使用redis-cli命令進入叢集環境
redis-cli -c -p 7000
至此,Redis叢集搭建成功。