1.创建目录
mkdir -p /data/redis/db # redis实例rdb、aof数据文件存储目录
mkdir -p /data/redis/conf # 配置文件
mkdir -p /data/redis/log # 所有服务日志输出目录
mkdir -p /data/redis/run # pid文件存储目录
2. redis下载和编译
cd /usr/local
wget https://download.redis.io/releases/redis-5.0.8.tar.gz
tar zxvf redis-5.0.8.tar.gz
cd redis-5.0.8
make && make install
编译完成后会在/usr/local/bin/下生成可执行文件。
3. 配置环境变量$PATH,如果/usr/local/bin/不在$PATH中则需要在/etc/profile中添加
export PATH="/usr/local/bin:"$PATH
4.创建配置文件/data/redis/conf/redis_9000.conf (端口号可以是任意的端口)
port 9000
cluster-enabled yes
cluster-config-file nodes_9000.conf
cluster-node-timeout 5000
appendonly yes
appendfilename "appendonly_9000.aof"
appendfsync no
dbfilename dump_9000.rdb
daemonize yes
maxmemory 6gb
maxmemory-policy allkeys-lru
pidfile /data/redis/run/redis_9000.pid
dir "/data/redis/db"
save 300 1
logfile "/data/redis/log/redis_9000.log"
protected-mode no
5. 自启动脚本/etc/rc.d/init.d/redis_9000
#!/bin/sh
#
# chkconfig: 2345 55 25
# description: Redis server daemon
#
# processname: redis_9000 #需要修改与$port相同
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=9000 # 需要修改与$port相同
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/data/redis/run/redis_${REDISPORT}.pid
CONF=/data/redis/conf/redis_${REDISPORT}.conf
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis $REDISPORT ..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit
esac
根据需要,配置启动脚本的执行权限:
chmod a+x /etc/rc.d/init.d/redis_9000
6. 启动redis实例
/etc/rc.d/init.d/redis_9000 start
查看日志/data/redis/log/redis_9000.log ,出现如下信息则启动成功。
20103:M 14 Jan 2021 16:16:20.434 * Ready to accept connections
7. 按照1-6步骤配置多个redis实例,本例配置6个实例 192.168.6.1:9000 192.168.6.2:9000 192.168.6.3:9000 192.168.6.4:9000 192.168.6.5:9000 192.168.6.6:9000
8.创建集群主节点,任意找一台集群中的服务器运行客户端工具redis-cli
redis-cli --cluster create 192.168.6.1:9000 192.168.6.2:9000 192.168.6.3:9000 192.168.6.4:9000 192.168.6.5:9000 192.168.6.6:9000
自动推荐出一个配置,在提示信息后输入yes,然后看见如下信息则集群创建成功
[OK] All 16384 slots covered
验证集群可用性,任意找一个节点输入set key命令,如果发生redirect重定向则集群正常
$ redis-cli -c -p 9000
redis 192.168.6.1:9000> set foo bar
-> Redirected to slot [12182] located at 192.168.6.5:9000
OK
redis 192.168.6.5:9000> get foo
-> Redirected to slot [12182] located at 192.168.6.5:9000
"bar"
9. 创建从节点,按照1-6步骤创建和主节点相同数量的redis实例
10. 向集群添加从节点,参见《redis 5 cluster集群增加节点动态扩容的步骤》