赞
踩
主从切换的过程中会丢失数据,因为只有一个 master,只能单点写,没有解决水平扩容的问题。而且每个节点都保存了所有数据,一个是内存的占用率较高,另外就是如果进行数据恢复时,非常慢。而且数据量过大对数据 IO 操作的性能也会有影响。
所以我们同样也有对 Redis 数据分片的需求,所谓分片就是把一份大数据拆分成多份小数据,在 3.0 之前,我们只能通过构建多个 redis 主从节点集群,把不同业务数据拆分到不冉的集群中,这种方式在业务层需要有大量的代码来完成数据分片、路由等工作,导致维护成本高、增加、移除节点比较繁琐。
Redis3.0 之后引入了 Redis Cluster 集群方案,它用来解决分布式扩展的需求,同时也实现了高可用机制。
参考下面的文章
Redis Cluster 集群详解.
三主三从
的架构模式,由于硬件问题,主从都配置到了同一台服务器上,所以一共是三台服务器,启动6个redis实例bind 0.0.0.0 protected-mode yes port 6372 daemonize yes pidfile /var/run/cluster6372.pid logfile "/home/susu/soft/mkinstall/redis/redis-6.0.16/logs/cluster6372.log" dir /tmp requirepass redis123 masterauth redis123 dbfilename "dump6372.rdb" cluster-enabled yes cluster-config-file nodes-6372.conf cluster-node-timeout 15000
./redis-server ../redisConfig/cluster/cluster6379.conf
redis-cli -a redis123 --cluster create --cluster-replicas 1 IP1:6372 IP1:6374 IP2:6373 IP2:6376 IP3:6379 IP3:6378
./redis-cli -a redis123 --cluster add- node newIp:newPort 引荐IP:引荐IP的端口
./redis-cli -a redis123 --cluster add- node IP4:6370 IP1:6372
./redis-cli -a redis123 --cluster reshard IP1:6372 # 操作机器上的IP和端口
./redis-cli -a redis123 --cluster add-node new_slave_ip:new_port master_ip:master_port --cluster-slave --cluster-master-id master的集群节点ID
cluster nodes
查看(即:6372的节点ID就是前面那堆uuid):./redis-cli -a redis123 --cluster add-node 要删除的slave的IP:端口 slave节点的uuid
./redis-cli -a redis123 --cluster reshard IP1:6372 # 操作机器上的IP和端口
./redis-cli -a redis123 --cluster check IP3:6373
Waiting for the cluster to join
这里不动了:遇到这种情况大部分是因为集群总线的端口没有开放!
关于集群总线:
Redis集群中的每个节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如 6379
,那么对应的还有一个额外的端口就是16379
作为数据端口。
这个作为数据端口是在6379端口端号上加10000。
例如:redis的端口为 6379
,那么另外一个需要开通的端口是:6379 + 10000, 即需要开启 16379
。
16379 端口用于集群总线,这是一个用二进制协议的点对点通信信道。这个集群总线(Cluster bus)用于节点的失败侦测、配置更新、故障转移授权,等等。
sudo firewall-cmd --add-port=16370-16379/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
10923-16383
:-c
参数即可,防止路由失效。-c
参数:启用集群模式(遵循-ASK 和 -MOVED重定向)-c
参数再次连接就没问题了,如下:./redis-cli -p 6379 -a redis123 -c
redis-cli -a redis123 --cluster create --cluster-replicas 1 IP1:6372 IP1:6374 IP2:6373 IP2:6376 IP3:6379 IP3:6378
info replication
cluster nodes
cluster info
cluster keyslot key
cluster keyslot catName
cluster failover
./redis-cli -a redis123 --cluster check IP3:6373
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。