centOS7下redis3.0安裝以及佈置叢集教程(單機建立多個例項除錯)
版本說明
本教程使用redis3.0版本。3.0版本主要增加了redis叢集功能。
安裝的前提條件
需要安裝gcc:yuminstall gcc-c++(如果你的Linux環境下已經裝過了Nginx,此處可忽略,因為Nginx也需要gcc環境才能安裝)
原始碼下載:此處提供官網下載地址(點選開啟連結)
安裝位置:將redis-3.0.0.tar.gz拷貝到/usr/local下(本文安裝位置在/usr/local/redis)
開始安裝
[[email protected] ~]# cd /usr/local/
[[email protected] local]# tar -zxvf redis-3.0.0.tar.gz
[[email protected] local]# cd redis-3.0.0/
[[email protected] redis-3.0.0]# make
[[email protected] redis-3.0.0]# make PREFIX=/usr/local/redis install
等待,要是其中某處問你yes/no或者y/n,輸入yes或者y即可
測試:
[[email protected] ~]# cd /usr/local/redis//bin/
[[email protected] bin]# ./redis-server
出現:
安裝成功!
接下來修改redis.conf配置檔案為後端啟動和叢集做準備!
[[email protected] bin]# chmod 777 redis.conf
[[email protected] bin]# vim redis.conf
位置:第37行daemonize 把no改為yes,允許後端啟動
位置:第633行cluster-enabled把no改為yes,叢集的前提條件
:wq
搭建叢集需要的環境
搭建叢集需要使用到官方提供的ruby指令碼。
需要安裝ruby的環境。
[[email protected] ]# yum install ruby[[email protected] ]# yum install rubygems
上傳redis-3.0.0.gem到/usr/local下
[[email protected] ]# gem install redis-3.0.0.gem
建立例項前的準備(資料夾)
[[email protected] local ]# mkdir redis-cluster
[[email protected] local ]#cp -r bin ../redis-cluster/redis01
以此步驟在redis-cluster下分別建立redis01到redis06總共6個資料夾,以此看做6個redis,後面將以此為基礎進行除錯
分別修改每一個redis0X下的redis.conf的埠分別從7001到7006
每一個redis.conf第633行cluster-enabled把no改為yes
:wq儲存並退出
把建立叢集的ruby指令碼複製到redis-cluster目錄下
[[email protected] ]# cd /usr/local/redis-3.0.0/src
[[email protected]
src ]# cp *.rb
/usr/local/redis-cluster/
至此資料夾的準備工作結束!
iptables裡面要開啟7001到7006埠!!!!!!!
編寫開啟6個redis例項的指令碼
[[email protected] ]#cd
/usr/local/redis-cluster/
[[email protected]
redis-cluster]# vim startall.sh
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
:wq儲存並退出
完成後redis-cluster的目錄結構應該是這樣的
建議把每個redis0X資料夾下的redis.conf都給大點的許可權
[[email protected] redis0X]# chmod 777 redis.conf
開啟6個redis例項
[[email protected] redis-cluster]# ./startall.sh
檢視所有的redis
[[email protected] redis-cluster]# ps -aux|grep redis
(1)[[email protected] redis-cluster]# ./redis-trib.rb
create --replicas 1 192.168.181.132:7001 192.168.181.132:7002 192.168.181.132:7003 192.168.181.132:7004 192.168.181.132:7005 192.168.181.132:7006
博主的Linux虛擬機器的靜態ip地址是192.168.181.132請根據自己的實際情況修改,centOS7的防火牆需要設定,網上很多,博主其他的博文裡面也有提到
1、這一步估計有不少人會失敗:出現這個問題
最下方是
[ERR]Node XXXXXX is not empty. Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database 0
解決辦法是將每一個redis下刪除生成的配置檔案nodes.conf,如果不行則說明現在建立的結點包括了舊叢集的結點資訊,需要刪除redis的持久化檔案後再重啟redis,比如:appendonly.aof、dump.rdb
還需要進入每一個redis清除資料:[[email protected] redis-cluster]# redis01/redis-cli -h 192.168.181.132 -p 7001 -c
192.168.181.132:7006> FLUSHALL
總共6個redis清除後重復(1)
若還是有問題:
[[email protected] redis-cluster]# ./redis-trib.rb check 192.168.181.132:7001
正常狀態下應該是:
如果不是如上,可以修復這個埠
[[email protected] redis-cluster]# ./redis-trib.rb fix 192.168.181.132:7001
請檢查這6個埠並修復!!!
建立成功
操作(1)成功後應該出現:
輸入yes確定
出現:
除錯redis叢集效果
參照下圖,set get 幾個資料,相互之間埠會有跳轉,證明叢集佈置成功會根據計算出的位置自己選擇儲存位置,而且互相之間可以訪問資料
success!!!!!
有任何問題歡迎留言討論!!