redis集群搭建 - cluster模式

概述

搭建一套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

image

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

image

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}

image

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}

image

验证

node3:6379 为主,node2:6380为从
node3:6379下线,node2:6380预期变成主
node3:6379故障恢复后,变成从节点

image
./redis-cli -h node3 -p 6379 -a 123456 shutdown # 停掉node3:6379
image
./redis-server /usr/local/redis/redis_6379/conf/redis.conf # 重新上线node3:6379
image

redis cluster相关命令

1. MOVED重定向 与 -c参数

重定向:key1槽位在node2上,正常登录node1,在node1set 会得到提示: 重定向到node2去操作。
image

-c :登录的时候带上-c参数,无论是否是集群模式,会自动帮我们进行重定向。
image

2. cluster命令

我就用了俩:cluster info 和cluster nodes, 其他的用的时候查吧

命令 描述
INFO 返回当前集群信息
MEET [] 添加一个节点至当前集群
MYID 返回当前节点集群ID
NODES 返回当前节点的集群信息
REPLICATE 将当前节点作为某一集群节点的从库
FAILOVER [FORCE
RESET [HARD
ADDSLOTS [ ...] 为当前集群节点增加一个或多个插槽位,推荐在bash shell中执行,可通过{int..int}指定多个插槽位
DELSLOTS [ ...] 为当前集群节点删除一个或多个插槽位,推荐在bash shell中执行,可通过{int..int}指定多个插槽位
FLUSHSLOTS 删除当前节点中所有的插槽信息
FORGET 从集群中删除某一节点
COUNT -FAILURE-REPORTS 返回当前集群节点的故障报告数量
COUNTKEYSINSLOT 返回某一插槽中的键的数量
GETKEYSINSLOT 返回当前节点存储在插槽中的key名称。
KEYSLOT 返回该key的哈希槽位
SAVECONFIG 保存当前集群配置,进行落盘操作
SLOTS 返回该插槽的信息

参考资料

https://www.cnblogs.com/Yunya-Cnblogs/p/14608937.html

posted @   记得看海  阅读(145)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示