redis集群安装
去官网下载redis安装包
redis官方下载地址,三个版本,我们选择stable版本,右键复制链接地址
- unstable (不稳定)
- stable (稳定)
- beta (测试)
wget -P /tmp http://download.redis.io/releases/redis-5.0.8.tar.gz
解压编译
#解压到/usr/local目录
tar -zxvf /tmp/redis-5.0.8.tar.gz -C /usr/local/
cd /usr/local/redis-5.0.8/src
#编译
make install
#启动redis测试
#./redis-server
#连接测试
#redis-cli -h 127.0.0.1 -p 6379
连接成功后quit退出redis
创建集群
cluster默认一般是创建6个以上的redis,因为我们是学习使用,一般只有一台电脑供我们学习所以,我们拷贝6个redis修改他们的端口号启动,模拟6台电脑6个redis的情况,生产环境和我们模拟的环境区别不大。
创建redis-cluster目录用来存放redis6个节点
mkdir /usr/local/redis-cluster
cp -r /usr/local/redis-5.0.8 /usr/local/redis-cluster/
cd /usr/local/redis-cluster/redis-5.0.8
rm -f nodes.conf
rm -f dump.rdb
修改配置文件
vim /usr/local/redis-cluster/redis-5.0.8/redis.conf
修改以下配置
- cluster-enabled yes
- cluster-node-timeout 5000
- protected-mode no
- daemonize yes
- bind 127.0.0.1 注释掉
拷贝并修改端口号
cp -r /usr/local/redis-cluster/redis-5.0.8 /usr/local/redis-cluster/redis01
cp -r /usr/local/redis-cluster/redis-5.0.8 /usr/local/redis-cluster/redis02
cp -r /usr/local/redis-cluster/redis-5.0.8 /usr/local/redis-cluster/redis03
cp -r /usr/local/redis-cluster/redis-5.0.8 /usr/local/redis-cluster/redis04
cp -r /usr/local/redis-cluster/redis-5.0.8 /usr/local/redis-cluster/redis05
cp -r /usr/local/redis-cluster/redis-5.0.8 /usr/local/redis-cluster/redis06
分别修改他们的端口号,在redis01、redis02、redis03、redis04、redis05、redis06目录下的redis.conf文件,修改port参数
目录 | 端口(port) |
---|---|
redis01 | 7001 |
redis02 | 7002 |
redis03 | 7003 |
redis04 | 7004 |
redis05 | 7005 |
redis06 | 7006 |
创建批量启动redis和批量关闭redis的脚本
- 批量启动(start.sh)
start.sh如下,脚本放在/usr/local/redis-cluster/目录下
cd /usr/local/redis-cluster/redis01
src/redis-server redis.conf
cd ../
cd redis02
src/redis-server redis.conf
cd ../
cd redis03
src/redis-server redis.conf
cd ../
cd redis04
src/redis-server redis.conf
cd ../
cd redis05
src/redis-server redis.conf
cd ../
cd redis06
src/redis-server redis.conf
cd ../
- 批量关闭脚本(stop.sh)
把redis-5.0.8/src/redis-cli 拷贝到 /usr/local/redis-cluster/ 目录,
cp /usr/local/redis-cluster/redis-5.0.8/src/redis-cli /usr/local/redis-cluster/
shop.sh脚本如下,脚本放在/usr/local/redis-cluster/目录
redis-cli -h 192.168.20.161 -p 7001 shutdown
redis-cli -h 192.168.20.161 -p 7002 shutdown
redis-cli -h 192.168.20.161 -p 7003 shutdown
redis-cli -h 192.168.20.161 -p 7004 shutdown
redis-cli -h 192.168.20.161 -p 7005 shutdown
redis-cli -h 192.168.20.161 -p 7006 shutdown
启动redis,开启集群
我这台centos服务器的ip是192.168.20.161,把这个ip换成自己的ip,不要用 127.0.0.1,不要用localhost,不然客户端如spring boot调用时可能会访问不到
#启动redis
sh /usr/local/redis-cluster/start.sh
#启动集群
./redis-cli --cluster create 192.168.20.161:7001 192.168.20.161:7002 192.168.20.161:7003 192.168.20.161:7004 192.168.20.161:7005 192.168.20.161:7006 --cluster-replicas 1
按照提示输入yes
成功部署如下图所示
碰到的问题
Waiting for the cluster to join 一直等待
生产环境需要检查防火墙端口是否开启,如redis端口为7001,那么需要开放7001、17001端口
虚拟环境,关闭所有redis,把redis01、redis02…redis06目录下dump.rdb、nodes.conf删掉,重新启动redis和集群。
[ERR] Node NOAUTH Authentication required
检查以下参数是否配置正确。
protected-mode
修改配置文件redis.conf配置文件,protected-mode=no,或者在启动redis的时候加上–protected-mode no
redis-server --protected-mode no
bind
修改配置文件redis.conf配置文件,注释掉bind
requirepass
启动集群时redis不要配置密码,需要配置密码,集群启动成功后在进行配置。
[ERR] Node 192.168.20.161:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
将redis01…redis06目录下的dump.rdb、nodes.conf删掉