Linux搭建Redis集群
1.下载redis的压缩包
2.将压缩包放在/usr/local,并解压
tar -zxvf redis-5.0.8.tar.gz
3.进入解压后的文件目录
cd redis-5.0.8
4.执行make命令编译
make
5.编译成功之后进入src文件夹,执行make install
make install
6.进入/usr/local(redis-5.0.8同级目录),并创建集群文件夹redis_cluster
cd /usr/local
mkdir redis_cluster
7.进入redis_cluster,分别创建7001-7006文件夹
mkdir 7001 7002 7003 7004 7005 7006
8.分别复制redis-5.0.8文件夹中的服务端和配置文件到7001-7006中
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/redis_cluster/7001/
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/redis_cluster/7002/
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/redis_cluster/7003/
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/redis_cluster/7004/
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/redis_cluster/7005/
cp /usr/local/redis-5.0.8/src/redis-server /usr/local/redis_cluster/7006/
cp /usr/local/redis-5.0.8/redis.conf /usr/local/redis_cluster/7001/
cp /usr/local/redis-5.0.8/redis.conf /usr/local/redis_cluster/7002/
cp /usr/local/redis-5.0.8/redis.conf /usr/local/redis_cluster/7003/
cp /usr/local/redis-5.0.8/redis.conf /usr/local/redis_cluster/7004/
cp /usr/local/redis-5.0.8/redis.conf /usr/local/redis_cluster/7005/
cp /usr/local/redis-5.0.8/redis.conf /usr/local/redis_cluster/7006/
9.修改以下几个配置
#将bind注释掉或者改为0.0.0.0
#bind 127.0.0.1
#port改为你配置的端口
port=7001
#指定redis要用守护进程的方式启动
daemonize yes
#开启集群
cluster-enabled yes
#集群的配置文件
cluster-config-file node-7001.conf
#集群节点超时时间
cluster-node-timeout 15000
#protect-mode:是为了禁止公网访问redis cache 需要关掉
protected-mode no
#配置集群映射的公网IP 这里要写公网ip,也就是外网能能访问的IP,必须要配置,不然外网无法访问集群
cluster-announce-ip 192.168.0.75
#配置集群映射的端口,要和上面端口相对应
cluster-announce-port 7001
#配置集群映射的总线端口,开一个redis集群端口,就必须开一个总线端口,总线端口为端口+10000
cluster-announce-bus-port 17001
#开启AOF持久化策略
appendonly yes
#将端口改掉
pidfile /var/run/redis_6380.pid
#生成文件地址,方便编写启动脚本
dir /usr/local/redis_cluster/7001/
#设置密码
requirepass 123456
10.创建集群脚本
vim /etc/init.d/redis_cluster
#!/bin/sh
# chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT1=7001
REDISPORT2=7002
REDISPORT3=7003
REDISPORT4=7004
REDISPORT5=7005
REDISPORT6=7006
HOSTIP=192.168.0.75
EXEC1=/usr/local/redis-5.0.8/src/redis-server
EXEC2=/usr/local/redis-5.0.8/src/redis-server
EXEC3=/usr/local/redis-5.0.8/src/redis-server
EXEC4=/usr/local/redis-5.0.8/src/redis-server
EXEC5=/usr/local/redis-5.0.8/src/redis-server
EXEC6=/usr/local/redis-5.0.8/src/redis-server
CLIEXEC=/usr/local/redis-5.0.8/src/redis-cli
# pid file path
PIDFILE=/var/run/redis_${REDISPORT1}.pid
CONF1="/usr/local/redis_cluster/${REDISPORT1}/redis.conf"
CONF2="/usr/local/redis_cluster/${REDISPORT2}/redis.conf"
CONF3="/usr/local/redis_cluster/${REDISPORT3}/redis.conf"
CONF4="/usr/local/redis_cluster/${REDISPORT4}/redis.conf"
CONF5="/usr/local/redis_cluster/${REDISPORT5}/redis.conf"
CONF6="/usr/local/redis_cluster/${REDISPORT6}/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Redis cluster server is Starting..."
$EXEC1 $CONF1 &
$EXEC2 $CONF2 &
$EXEC3 $CONF3 &
$EXEC4 $CONF4 &
$EXEC5 $CONF5 &
$EXEC6 $CONF6 &
echo "Redis cluster start success."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -h $HOSTIP -p $REDISPORT1 -a 123456 shutdown
$CLIEXEC -h $HOSTIP -p $REDISPORT2 -a 123456 shutdown
$CLIEXEC -h $HOSTIP -p $REDISPORT3 -a 123456 shutdown
$CLIEXEC -h $HOSTIP -p $REDISPORT4 -a 123456 shutdown
$CLIEXEC -h $HOSTIP -p $REDISPORT5 -a 123456 shutdown
$CLIEXEC -h $HOSTIP -p $REDISPORT6 -a 123456 shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis cluster to shutdown ..."
sleep 1
done
echo "Redis cluster stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
$CLIEXEC -h $HOSTIP -p $REDISPORT1 -a 123456 shutdown中的123456根据具体设置密码
11.文件授权:执行权限
chmod a+x /etc/init.d/redis_cluster
12.注册为系统服务
chkconfig --add redis_cluster
13.配置为开机自启动
chkconfig redis_cluster on
14.测试启动命令
启动:
service redis_cluster start
关闭:
service redis_cluster stop
15.创建集群
使用命令 /usr/local/redis-5.0.8/src/redis-cli --cluster create 服务器IP:port1 服务器IP:port1 服务器IP:port1 服务器IP:port1 服务器IP:port1 服务器IP:port1 --cluster-replicas 1
/usr/local/redis-5.0.8/src/redis-cli --cluster create --cluster-replicas 1 10.0.0.8:7001 10.0.0.8:7002 10.0.0.8:7003 10.0.0.8:7004 10.0.0.8:7005 10.0.0.8:7006
这里我采用的是单服务器的伪集群模式,是私网ip
16.查看集群状态
/usr/local/redis-5.0.8/src/redis-cli -a 123456 -p 7001
注:如果外网链接不上,注意服务器是否开启了7001-7006和17001-17006端口,