概述
搭建一套redis cluster集群。
架构
192.168.0.21:6379 主 192.168.0.23:6380 从
192.168.0.22:6379 主 192.168.0.21:6380 从
192.168.0.23:6379 主 192.168.0.22:6380 从
修改这三台服务器的host文件(选做)
vim /etc/hosts
192.168.0.21 node1
192.168.0.22 node2
192.168.0.23 node3
安装步骤
1. 安装gcc环境1. 安装gcc环境
yum install gcc-c++ --nogpgcheck
2. 进入解压目录编译,安装
make
# 指定了安装目录
make instal PREFIX=/usr/local/redis
3. 进入安装目录,创建文件夹
cd /usr/local/redis
mkdir -p redis_63{79,80}/{conf,pid,logs}
4.编辑conf文件
# 绑定端口,需要修改
port 6380# pid文件存储位置,文件名需要修改
pidfile /usr/local/redis/redis_6380/pid/redis_6380.pid# log文件存储位置,文件名需要修改
logfile /usr/local/redis/redis_6380/logs/redis_6380.log# RDB快照备份文件名,文件名需要修改
dbfilename redis_6380.rdb# 本地数据库存储目录,需要修改
dir /usr/local/redis/redis_6380# 生成的集群节点配置文件名,文件名需要修改
cluster-config-file nodes_6380.conf# 保护模式:关闭
protected-mode no
# ip限制:不限制(不推荐用bind来限制ip,应该用防火墙限制)
bind 0.0.0.0
# 密码
requirepass 123456
# 主节点密码
masterauth 123456# 守护进行模式启动
daemonize yes# 设置数据库数量,默认数据库为0
databases 16# 集群相关配置
# 是否以集群模式启动
cluster-enabled yes# 集群节点回应最长时间,超过该时间被认为下线
cluster-node-timeout 15000
5. 启动服务
cd /usr/local/redis/bin
./redis-server /usr/local/redis/redis_6379/conf/redis.conf
./redis-server /usr/local/redis/redis_6380/conf/redis.conf
6. 注册集群节点
./redis-cli -h 192.168.0.21 -p 6379 -a 123456
cluster meet 192.168.0.21 6380
cluster meet 192.168.0.22 6379
cluster meet 192.168.0.22 6380
cluster meet 192.168.0.23 6379
cluster meet 192.168.0.23 6380
7. 注册主从关系
./redis-cli -h 192.168.0.21 -p 6380 -a 123456
cluster replicate #{node-id}
./redis-cli -h 192.168.0.22 -p 6380 -a 123456
cluster replicate #{node-id}
./redis-cli -h 192.168.0.23 -p 6380 -a 123456
cluster replicate #{node-id}
8. 分配槽位 - 在主节点分
./redis-cli -h node1 -p 6379 -a 123456 cluster addslots {0..5461}
./redis-cli -h node2 -p 6379 -a 123456 cluster addslots {5462..10922}
./redis-cli -h node3 -p 6379 -a 123456 cluster addslots {10923..16383}
验证
node3:6379 为主,node2:6380为从
node3:6379下线,node2:6380预期变成主
node3:6379故障恢复后,变成从节点
./redis-cli -h node3 -p 6379 -a 123456 shutdown # 停掉node3:6379
./redis-server /usr/local/redis/redis_6379/conf/redis.conf # 重新上线node3:6379
redis cluster相关命令
1. MOVED重定向 与 -c参数
重定向:key1槽位在node2上,正常登录node1,在node1set 会得到提示: 重定向到node2去操作。
-c :登录的时候带上-c参数,无论是否是集群模式,会自动帮我们进行重定向。
2. cluster命令
我就用了俩:cluster info 和cluster nodes, 其他的用的时候查吧
命令 | 描述 |
---|---|
INFO | 返回当前集群信息 |
MEET | |
MYID | 返回当前节点集群ID |
NODES | 返回当前节点的集群信息 |
REPLICATE | |
FAILOVER | [FORCE |
RESET | [HARD |
ADDSLOTS | |
DELSLOTS | |
FLUSHSLOTS | 删除当前节点中所有的插槽信息 |
FORGET | |
COUNT | -FAILURE-REPORTS |
COUNTKEYSINSLOT | |
GETKEYSINSLOT | |
KEYSLOT | |
SAVECONFIG | 保存当前集群配置,进行落盘操作 |
SLOTS | 返回该插槽的信息 |
参考资料
https://www.cnblogs.com/Yunya-Cnblogs/p/14608937.html