Redis集群安装
文章介绍在三台主机上安装三主三从的Redis集群,安装步骤如下:
安装前准备:源码包安装redis需要部署gcc
yum install -y gcc
redis下载,7.0+版本redis支持通过主机名访问集群
wget https://download.redis.io/releases/redis-7.0.7.tar.gz
配置主机名:
hostnamectl set-hostname redis-node1
vim /etc/hosts
10.0.0.10 redis-node1 10.0.0.11 redis-node2 10.0.0.12 redis-node3
redis集群各节点安装,以redis01为例
mkdir -p /data/redis/redis01/{conf,log,data,run}
将redis.tar.gz在/data/目录下解压、编译安装
cd /data/; tar -xf redis*.tar.gz
cd redis-7.0.7/src
make
cd redis-7.0.7
make install PREFIX=/data/redis/redis01
将源码包中的redis.conf复制到安装路径下的conf目录下
cp redis-7.0.7/redis.conf /data/redis/redis01/conf/redis-node01.conf
其中的地址、端口、路径等信息根据实际进行修改
vim /data/redis/redis01/conf/redis-node01.conf
# 本机地址 bind 10.0.0.10 # 端口 port 17001 # pid存储目录 pidfile /data/redis/redis01/run/redis_01.pid # 日志存储目录 logfile /data/redis/redis01/log/redis_01.log # 数据存储目录(目录要提前创建好) dir /data/redis/redis01/data/ # 开启集群 cluster-enabled yes # 集群节点配置文件,这个文件是不能手动编辑的。确保每一个集群节点的配置文件不同 cluster-config-file nodes-01.conf # 集群节点的超时时间,单位:ms,超时后集群会认为该节点失败 cluster-node-timeout 15000 # 开启持久化 appendonly yes # 守护进程 daemonize yes # 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。 protected-mode no # 以下为redis7新的配置项 cluster-preferred-endpoint-type hostname cluster-announce-hostname redis-node1 # 设置最大内存限制 maxmemory 24gb # 数据清理机制 maxmemory-policy volatile-lru # 鉴权密码配置,$password配置为真实密码 masterauth "$password" requirepass "$password" # 数据备份 save 3600 1 300 100 60 10000
将编译好的安装包拷贝到其他节点
cp -ar /data/redis/redis01 /data/redis/redis04
scp -r /data/redis 10.0.0.11:/data
scp -r /data/redis 10.0.0.12:/data
登录redis-node2节点
cd /data/redis
mv redis01 redis02
mv redis04 redis05
登录redis-node3节点
cd /data/redis
mv redis01 redis03
mv redis04 redis06
各个节点根据实际进行修改配置文件
…
启动各个节点
/data/redis/redis01/bin/redis-server /data/redis/redis01/conf/redis.conf;
/data/redis/redis04/bin/redis-server /data/redis/redis04/conf/redis.conf;
/data/redis/redis02/bin/redis-server /data/redis/redis02/conf/redis.conf;
/data/redis/redis05/bin/redis-server /data/redis/redis05/conf/redis.conf;
/data/redis/redis03/bin/redis-server /data/redis/redis03/conf/redis.conf;
/data/redis/redis06/bin/redis-server /data/redis/redis06/conf/redis.conf;
设置集群模式
/data/redis/redis01/bin/redis-cli --cluster create 10.0.0.10:17001 10.0.0.11:17001 10.0.0.12:17001 10.0.0.10:17002 10.0.0.11:17002 10.0.0.12:17002 --cluster-replicas 1 -a ‘pwd’
查看集群状态
/data/redis/redis01/bin/redis-cli -c -h 10.0.0.10 -p 17001 -a ‘pwd’ cluster info
/data/redis/redis01/bin/redis-cli -c -h 10.0.0.10 -p 17001 -a ‘pwd’ cluster nodes
当发现集群状态异常,如连接时发现JedisClusterOperationException: Cluster retry deadline exceeded,可重新设置集群:
停止redis进程(节点)
ps -ef|grep redis|grep -v grep|awk ‘{print $2}’|xargs kill -9
清理各节点数据
rm -rf /data/redis/redis01/data/* /data/redis/redis01/log/* /data/redis/redis01/run/;
rm -rf /data/redis/redis04/data/ /data/redis/redis04/log/* /data/redis/redis04/run/*;
rm -rf /data/redis/redis02/data/* /data/redis/redis02/log/* /data/redis/redis02/run/;
rm -rf /data/redis/redis05/data/ /data/redis/redis05/log/* /data/redis/redis05/run/*;
rm -rf /data/redis/redis03/data/* /data/redis/redis03/log/* /data/redis/redis03/run/;
rm -rf /data/redis/redis06/data/ /data/redis/redis06/log/* /data/redis/redis06/run/*;
启动各个节点
如上
设置集群模式
如上
查看集群状态
如上