標籤:redis 叢集 shell
使用源碼安裝redis,在官網上下載3.0以後的版本。
(1)確保系統安裝zlib,否則gem install會報(no such file to load -- zlib)
#download:zlib-1.2.6.tar
./configure
make
make install
(2)安裝ruby
# ruby1.9.2
cd /home/searat/ruby
./configure -prefix=/usr/local/ruby
make
make install
cp ruby /usr/local/bin
(3)安裝rubygem
# rubygems-1.8.16.tgz
cd /home/searat/gem
ruby setup.rb
cp bin/gem /usr/local/bin
(4)安裝gem-redis
gem install redis --version 3.0.0
wget http://rubygems.org/gems/redis/versions/3.0.0
gem install -l /home/searat/redis-3.0.0.gem
接下對redis目錄做處理
使用源碼安裝後目錄如下:
-bash-4.1$ tree -L 2 /home/searat/redis
/home/searat/redis
├── bin
│ ├── dump.rdb
│ ├── redis-benchmark
│ ├── redis-check-aof
│ ├── redis-check-dump
│ ├── redis-cli
│ ├── redis-sentinel -> redis-server
│ └── redis-server
├── conf
│ ├── dump.rdb
│ └── redis.conf
├── log
│ └── redis.log
└── redis_6379
從源碼包中複製redis-trib.rb到/home/searat/redis/bin下,另外從源碼包中找到create-cluster指令碼,複製到/home/searat/redis/bin下。
若在單台伺服器上使用create-cluster建立redis叢集,直接執行create-cluster指令碼即可。
若在兩台或者更多台伺服器上建立redis叢集,可以改寫create-cluster指令碼
-bash-4.1$ cat create-cluster #!/bin/bashPORT=$2 #連接埠號碼可以自己隨意指定PORTNUM=3 #定義連接埠號碼的個數REPLICAS=1REDIS_HOME=/home/searat/redisHOST1=192.168.1.101HOST2=192.168.1.102HOSTS="$HOST1 $HOST2"declare -A HOSTGROUP #定義一個數組用來存放IP:PORT形式的資料,在建立叢集時使用i=1if [ "$1" == "start" ]then while [ $PORTNUM -gt "0" ]; do echo "Starting 127.0.0.1:$PORT" $REDIS_HOME/bin/redis-server ../conf/redis_$PORT.confPORT=$((PORT+1))PORTNUM=$((PORTNUM-1)) done exit 0fiif [ "$1" == "stop" ]then while [ $PORTNUM -gt "0" ]; do echo "Stopping 127.0.0.1:$PORT" $REDIS_HOME/bin/redis-cli -p $PORT shutdown nosave PORT=$((PORT+1)) PORTNUM=$((PORTNUM-1)) done exit 0fiif [ "$1" == "create" ]then while [ $PORTNUM -gt "0" ]; do for host in $HOSTS do HOSTGROUP[$i]=$host:$PORT i=`expr $i + 1` done PORT=$((PORT+1)) PORTNUM=$((PORTNUM-1)) done echo ${HOSTGROUP[*]} $REDIS_HOME/bin/redis-trib.rb create --replicas 1 ${HOSTGROUP[*]} exit 0fiif [ "$1" == "clean" ]then rm -rf ../log/*.log rm -rf ../data/appendonly*.aof rm -rf ../data/dump*.rdb rm -rf ../data/nodes*.conf exit 0fiecho "Usage: $0 [start|create|stop|clean"echo "start -- Launch Redis Cluster instances."echo "create -- Create a cluster using redis-trib create."echo "stop -- Stop Redis Cluster instances."echo "clean -- Remove all instances data, logs, configs."
至於redis_6379.conf、redis_6380.conf這些設定檔,可以提前配置好,也可以在create-cluster中繼續追加自動組建組態檔案的代碼。
redis叢集啟停:/home/searat/redis/bin/create-cluster start/stop 6379
建立叢集:/home/searat/redis/bin/create-cluster create 6379
如果提示如下資訊,則證明建立成功:
[OK] All nodes agree about slotsconfiguration.
>>>Check for open slots...
>>>Check slots coverage...
[OK] All 16384 slots covered.
驗證Master、Slave資訊:
/home/searat/redis/bin/redis-cli -p $PORT cluster nodes | head -30
0784283914d088acd66c458f6ee32db337bc3daf192.168.0.101:6379 master- 0 1453248628585 2 connected 5461-10922
4eebf65f5b1f4ac4c547c47fd19f442b30f27396192.168.0.102:6379myself,master - 0 0 1 connected 0-5460
f0763f4d57ce2996f95fdc0693680a36bb004c98192.168.0.102:6381 slave0784283914d088acd66c458f6ee32db337bc3daf 0 1453248627976 5 connected
d7461d15c6347a960a686530d3b72602a1fd855b192.168.0.101:6380 slave4eebf65f5b1f4ac4c547c47fd19f442b30f27396 0 1453248627976 4 connected
0977a10502ea3897c943ea88afe6133170ed09a8192.168.0.101:6381 master- 0 1453248628585 7 connected 10923-16383
836cdfbf7938c983f4bae07197a413fc43f7a155192.168.0.102:6380 slave0977a10502ea3897c943ea88afe6133170ed09a8 0 1453248627976 7 connected
Yes!這樣就通過create-cluster的方式建立了redis叢集,管理方便,擴充方便。
本文出自 “Jacky鑫” 部落格,請務必保留此出處http://jackyxin.blog.51cto.com/1976631/1736970
使用ruby內建工具進行redis叢集搭建