1. 程式人生 > >centOS7下redis3.0安裝以及佈置叢集教程(單機建立多個例項除錯)

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!!!!!

有任何問題歡迎留言討論!!