Redis6 集群单机安装
官网下载
https://download.redis.io/releases/redis-6.2.6.tar.gz
http://download.redis.io/redis-stable.tar.gz
文档参考
https://redis.io/documentation
解压编译
#安装编译需要的tcl
yum -y install gcc tcl
rm -rf /data/redis
mkdir -p /data/redis/bin
mkdir -p /data/redis/data
mkdir -p /data/redis/conf
mkdir -p /data/redis/log
mkdir -p /data/redis/run
cd /data/redis
wget http://download.redis.io/redis-stable.tar.gz
#wget https://download.redis.io/releases/redis-6.2.6.tar.gz -O redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd /data/redis/redis-stable
sudo make install PREFIX=/data/redis
配置准备
#添加到全局环境
cd /data/redis/redis-stable
sudo cp src/redis-server /usr/local/bin/
sudo cp src/redis-cli /usr/local/bin/
#拷贝模板配置文件
cd /data/redis/redis-stable
\cp redis.conf /data/redis/conf/7100.conf
\cp redis.conf /data/redis/conf/7101.conf
\cp redis.conf /data/redis/conf/7102.conf
\cp redis.conf /data/redis/conf/7103.conf
\cp redis.conf /data/redis/conf/7104.conf
\cp redis.conf /data/redis/conf/7105.conf
mkdir -p /data/redis/data/7100
mkdir -p /data/redis/data/7101
mkdir -p /data/redis/data/7102
mkdir -p /data/redis/data/7103
mkdir -p /data/redis/data/7104
mkdir -p /data/redis/data/7105
修改配置
cd /data/redis/conf
sed -i "s/daemonize no/daemonize yes/g" *.conf
sed -i "s/appendonly no/appendonly yes/g" *.conf #持久化
sed -i "s/# cluster-enabled yes/cluster-enabled yes/g" *.conf #开启集群
sed -i "s/# requirepass foobared/requirepass ppppp/g" *.conf #修改密码
sed -i "s/port 6379/port 7100/g" 7100.conf
sed -i "s/port 6379/port 7101/g" 7101.conf
sed -i "s/port 6379/port 7102/g" 7102.conf
sed -i "s/port 6379/port 7103/g" 7103.conf
sed -i "s/port 6379/port 7104/g" 7104.conf
sed -i "s/port 6379/port 7105/g" 7105.conf
sed -i "s/dir .\//dir \/data\/redis\/data\/7100/g" 7100.conf
sed -i "s/dir .\//dir \/data\/redis\/data\/7101/g" 7101.conf
sed -i "s/dir .\//dir \/data\/redis\/data\/7102/g" 7102.conf
sed -i "s/dir .\//dir \/data\/redis\/data\/7103/g" 7103.conf
sed -i "s/dir .\//dir \/data\/redis\/data\/7104/g" 7104.conf
sed -i "s/dir .\//dir \/data\/redis\/data\/7105/g" 7105.conf
sed -i "s/logfile \"\"/logfile \"\/data\/redis\/log\/7100.log\"/g" 7100.conf
sed -i "s/logfile \"\"/logfile \"\/data\/redis\/log\/7101.log\"/g" 7101.conf
sed -i "s/logfile \"\"/logfile \"\/data\/redis\/log\/7102.log\"/g" 7102.conf
sed -i "s/logfile \"\"/logfile \"\/data\/redis\/log\/7103.log\"/g" 7103.conf
sed -i "s/logfile \"\"/logfile \"\/data\/redis\/log\/7104.log\"/g" 7104.conf
sed -i "s/logfile \"\"/logfile \"\/data\/redis\/log\/7105.log\"/g" 7105.conf
#集群节点配置文件,这个文件是不能手动编辑的。确保每一个集群节点的配置文件不同
sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-7100.conf/g" 7100.conf
sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-7101.conf/g" 7101.conf
sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-7102.conf/g" 7102.conf
sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-7103.conf/g" 7103.conf
sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-7104.conf/g" 7104.conf
sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-7105.conf/g" 7105.conf
集群启动脚本
vi /usr/local/bin/redis_cluster
chmod +x /usr/local/bin/redis_cluster
#开机自启
\cp /usr/local/bin/redis_cluster /etc/init.d/redis_cluster
#!/bin/bash
# shellcheck disable=SC2181
APP_WORKDIR=/data/redis
APP_NAME=redis_cluster
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist() {
pid=$(ps -ef | grep "redis-server" | grep -v grep | awk '{print $2}')
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start() {
is_exist
# shellcheck disable=SC2181
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
tmp=$(ls ${APP_WORKDIR}/conf)
for i in ${tmp}; do
${APP_WORKDIR}/bin/redis-server ${APP_WORKDIR}/conf/$i
done
echo "${APP_NAME} start success"
fi
status
}
#停止方法
stop() {
is_exist
if [ $? -eq "0" ]; then
echo "stop ${APP_NAME}!"
pgrep redis-server | xargs -exec kill -9
else
status
fi
}
#输出运行状态
status() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart() {
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
status
usage
;;
esac
启动集群
#第一次需要初始化集群,直接yes自动分配M和S
redis-cli --cluster create 127.0.0.1:7100 127.0.0.1:7101 127.0.0.1:7102 127.0.0.1:7103 127.0.0.1:7104 127.0.0.1:7105 --cluster-replicas 1 --pass ppppp
常用命令
#查看集群信息
redis-cli -c -h 127.0.0.1 -p 7100 --pass ppppp cluster info
#查看集群节点
redis-cli -c -h 127.0.0.1 -p 7100 --pass ppppp cluster nodes
#连接集群使用
redis-cli -c -h 127.0.0.1 -p 7100 --pass ppppp