redis集群配置
redis集群配置.pdf
跳转/opt/redis → cd /opt/redis
1、下载redis
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
2、解压
tar -xzvf redis-6.2.1.tar.gz
3、编译
cd /opt/redis/redis-6.2.1
make MALLOC=libc
4、安装
make PREFIX=/opt/redis/ install
⽣成bin
5、每台机器创建两个节点
mkdir redis-cluster
cd redis-cluster
mkdir redis01
mkdir redis02 ...
6、复制redis.conf到节点上
cp /opt/redis/redis-6.2.1/redis.conf /opt/redis/redis-cluster/redis01/
cp /opt/redis/redis-6.2.1/redis.conf /opt/redis/redis-cluster/redis02/
修改⽂件
# 指定只能以192.168.0.226这个IP访问
bind 192.168.0.226
# 指定端⼝
port 7001
# 启动后台运⾏
daemonize yes
# 存放进程Id
pidfile /opt/redis/redis-cluster/redis01/7001.pid
# ⽇志⽂件
logfile "/dev/null"
# 3600秒内有⼀个key变化就执⾏快照持久化
save 3600 1
# 快照存放⽂件
dbfilename 7001.rdb
# 是否启动保存操作⽇志appendonly yes
# 操作⽇志存放⽂件
appendfilename "7001.aof"
# 是否开启集群
cluster-enabled yes
# 集群配置⽂件(启动后⾃动⽣成)
cluster-config-file nodes-7001.conf
# 集群节点ping、pong超时时间
cluster-node-timeout 5000
7、复制bin到节点上
cd /opt/redis
cp -r /opt/redis/bin/ redis-cluster/redis01
8、创建启动redis节点的脚本⽂件
(1)跳转⾄: cd /opt/redis/redis-cluster
(2)编制start-all.sh脚本内容:
cd redis01
./redis-server redis.conf
cd …
cd redis02
./redis-server redis.conf
cd …
(3)添加权限 chmod -x start-all.sh
注意:shell ⽂件导致格式异常不能正常执⾏
解决⽅法:1、 vim ⽂件 2、 输⼊ : set ff=unix 然后回⻋ 3、 保存
(4)启动 ./start-all.sh
9、在另外两台服务器进⾏相同操作 redis03 redis04 redis05 redis06
10、集群
cd /opt/redis/redis-cluster/redis01
⽆密码: ./redis-cli --cluster create 192.168.0.226:7001 192.168.0.226:7002 192.168.0.227:7003 192.168.0.227:7004
192.168.0.228:7005 192.168.0.228:7006 --cluster-replicas 1
有密码: ./redis-cli -a pwd123 --cluster create 192.168.0.226:7001 192.168.0.226:7002 192.168.0.227:7003
192.168.0.227:7004 192.168.0.228:7005 192.168.0.228:7006 --cluster-replicas 1
11、客⼾端登录
./redis-cli -h 192.168.0.226 -c -p 7001 -a pwd123
加上–raw后,获取到的value是原始输出,⽽不是16进制输出。
./redis-cli --raw -h 192.168.0.226 -c -p 7001 -a pwd123
12.命令
停⽌命令: ./redis-cli -h 192.168.0.226 -c -p 7001 -a pwd123 shutdown
./redis-cli -h 192.168.0.226 -c -p 7002 -a pwd123 shutdown
./redis-cli -h 192.168.0.227 -c -p 7003 -a pwd123 shutdown
./redis-cli -h 192.168.0.227 -c -p 7004 -a pwd123 shutdown
./redis-cli -h 192.168.0.228 -c -p 7005 -a pwd123 shutdown
./redis-cli -h 192.168.0.228 -c -p 7006 -a pwd123 shutdown
启动命令: cd /opt/redis/redis-cluster
./start-all.sh
12、集群需要关注的地⽅
13、迁移异常
启动redis 集群的时候出现了这个问题 :
解决办法:
-
先将redis 进程⼲掉 ps -ef | grep redis kill pid
-
将每个节点下aof、rdb、nodes.conf本地备份⽂件删除,redis.conf appendfilename ;
-
之后再执⾏脚本,成功执⾏;
-
这种情况可能发⽣在每次⾮正常关闭redis集群的时候
三、集群启动异常
在第10步创建集群时,报 Waiting for the cluster to join…并一直卡在这里
遇到这种情况大部分是因为 集群总线 的端口没有开放!
集群总线
每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,
比如7001,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,
例如:redis的端口为7001,那么另外一个需要开通的端口是:7001 + 10000,
即需要开启 17001。17001端口用于集群总线,这是一个用二进制协议的点对点通信信道。
这个集群总线(Cluster bus)用于节点的失败侦测、配置更新、故障转移授权,等等。
此时可以采用关闭本机防火墙的办法,基于安全性考虑,建议用在本机防火墙中开放相应端口。
#开放防火墙端口
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --reload
#其他服务节点端口依次执行。
#关闭redis集群中的所有实例,直接kill -9 就行
#于此同时删除掉每个节点文件下的 .aof,.rdb,nodes.conf文件,如果是首次创建集群.rdb文件应该没有,如图中标示
#执行集群创建命令
./redis-cli -a szcx@2021 --cluster create ip1:7001 ip1:7002 ip2:7003 ip2:7004 ip3:7005 ip3:7006 --cluster-replicas 1