使用源码安装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/bash
PORT=$2 #端口号可以自己随意指定
PORTNUM=3 #定义端口号的个数
REPLICAS=1
REDIS_HOME=/home/searat/redis
HOST1=192.168.1.101
HOST2=192.168.1.102
HOSTS="$HOST1 $HOST2"
declare -A HOSTGROUP #定义一个数组用来存放IP:PORT形式的数据,在创建集群时使用
i=1
if [ "$1" == "start" ]
then
while [ $PORTNUM -gt "0" ]; do
echo "Starting 127.0.0.1:$PORT"
$REDIS_HOME/bin/redis-server ../conf/redis_$PORT.conf
PORT=$((PORT+1))
PORTNUM=$((PORTNUM-1))
done
exit 0
fi
if [ "$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 0
fi
if [ "$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 0
fi
if [ "$1" == "clean" ]
then
rm -rf ../log/*.log
rm -rf ../data/appendonly*.aof
rm -rf ../data/dump*.rdb
rm -rf ../data/nodes*.conf
exit 0
fi
echo "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