乌市泽哥 发表于 2024-6-20 18:02:41

redis集群操作

1 集群

Redis在3.0后开始支持Cluster(模式)模式,目前redis的集群支持节点的主动发现,支持slave-master选举和容错,支持在线分片(sharding shard )等特性。
2 集群架构图

https://img-blog.csdnimg.cn/cbf91323fe6646ac9cce84f97a7ad69e.png#pic_center
3 集群细节

- 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
- 节点的fail是通过集群中超过半数的节点检测失效时才生效.
- 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
- redis-cluster把所有的物理节点映射到slot上,cluster 负责维护node<->slot<->value
https://img-blog.csdnimg.cn/3ea709522263440ca143d9438fff893d.png#pic_center
4 集群搭建

判定一个是集群中的节点是否可用,是集群中的所用主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,以是搭建redis集群时建议节点数最好为奇数。
搭建集群至少需要三个主节点,三个从节点,至少需要6个节点。

[*] 准备环境安装ruby以及redis集群依赖
yum install -y ruby rubygems
gem install redis-xxx.gem

[*] 在一台机器创建7个目录
# mkdir 7000 7001 7002 7003 7004 7005 7006

[*] 每个目录复制一份配置文件
# cp redis-7.0.0/redis.conf 7000/
# cp redis-7.0.0/redis.conf 7001/
# cp redis-7.0.0/redis.conf 7002/
# cp redis-7.0.0/redis.conf 7003/
# cp redis-7.0.0/redis.conf 7004/
# cp redis-7.0.0/redis.conf 7005/
# cp redis-7.0.0/redis.conf 7006/

[*] 修改不同目录配置文件
port         6379 .....                               //修改端口
bind0.0.0.0                                  //开启远程连接
cluster-enabledyes                                        //开启集群模式
cluster-config-filenodes-port.conf //集群节点配置文件
cluster-node-timeout5000                 //集群节点超时时间
appendonlyyes                                  //开启AOF持久化

[*] 指定不同目录配置文件启动七个节点
# ./redis-server/root/7000/redis.conf
# ./redis-server/root/7001/redis.conf
# ./redis-server/root/7002/redis.conf
# ./redis-server/root/7003/redis.conf
# ./redis-server/root/7004/redis.conf
# ./redis-server/root/7005/redis.conf
# ./redis-server/root/7006/redis.conf

[*] 查看历程
# ps aux|grep redis

4.1.创建集群


[*] 复制集群操作脚本到bin目录中
# cp /root/redis-7.0.0/src/redis-trib.rb .

[*] 创建集群
./redis-trib.rb create --replicas 1 192.168.202.205:7000 192.168.202.205:7001 192.168.202.205:7002 192.168.202.205:7003 192.168.202.205:7004 192.168.202.205:7005 192.168.202.205:7006

[*] 集群创建成功出现如下提示
ALL XXX slots covered.

4.2.查看集群状态


[*]查看集群状态 check [原始集群中任意节点] [无]
./redis-trib.rb check 192.168.202.205:7000

[*]集群节点状态说明

[*] 主节点
主节点存在hash slots,且主节点的hash slots 没有交叉
主节点不能删除
一个主节点可以有多个从节点
主节点宕机时多个副本之间主动选举主节点
[*] 从节点
从节点没有hash slots
从节点可以删除
从节点不负责数据的写,只负责数据的同步

4.3.添加主节点


[*]添加主节点 add-node [新加入节点] [原始集群中任意节点]./redis-trib.rbadd-node 192.168.1.158:7006192.168.1.158:7005
- 注意:
1.该节点必须以集群模式启动
2.默认情况下该节点就是以master节点形式添加

4.4.添加从节点


[*]添加从节点 add-node --slave [新加入节点] [集群中任意节点]./redis-trib.rbadd-node --slave 192.168.1.158:7006 192.168.1.158:7000
- 注意:
当添加副本节点时没有指定主节点,redis会随机给副本节点较少的主节点添加当前副本节点

[*]为确定的master节点添加主节点 add-node --slave --master-id master节点id [新加入节点] [集群任意节点]./redis-trib.rbadd-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e    127.0.0.1:7006127.0.0.1:7000

4.5.删除副本节点


[*]删除节点 del-node [集群中任意节点] [删除节点id]./redis-trib.rbdel-node 127.0.0.1:7002 0ca3f102ecf0c888fc7a7ce43a13e9be9f6d3dd1
- 注意:
1.被删除的节点必须是从节点或没有被分配hash slots的节点

4.6.集群在线分片


[*]在线分片 reshard [集群中任意节点] [无]./redis-trib.rbreshard192.168.1.158:7000


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: redis集群操作