Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。
Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。
重启redis服务,开启AOF模式,建立redis目录,建立实例目录7001~7006,
systemctl restart redis_6379.service
vim /etc/redis/6379.conf
appendonly yes
cd /usr/local
mkdir redis
cd redis/
mkdir 700{1..6}
依次对集群节点,对其配置文件进行修改,并启动服务
cd 7001 vim redis.conf port 7001 ##不同的文件此处不同 cluster-enabled yes ##开启集群 cluster-config-file nodes.conf ##集群配置文件 cluster-node-timeout 5000 ##节点超时 appendonly yes ##开启AOF模式 daemonize yes ##用守护线程的方式启动 redis-server redis.conf
使用redis-cli将6个实例合成一个集群,–replicas 1 采用最简单的方式配置集群,一台主机,一台从机,正好三组。
检查集群
集群信息查看
由图可知7004是7002的从节点,
[root@server1 ~]# redis-cli -c -p 7002
使用redis-cli来进行集群的交互,使用客户端连接任意一个节点,使用-c表示以集群的方式登录,-p指定端口。
127.0.0.1:7002> SHUTDOWN
连接7002后,关闭当前节点
再次检查集群会发现7004代替7002变成了主节点
首先新创建两个节点,并进行配置
cd /usr/local/redis
mkdir 700{7,8}
cd 7007
cp …/7001/redis.conf .
vim redis.conf
///
port 7007
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
///
redis-server redis.conf
7008相同
ps ax
redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001 ##将节点加入了集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作 redis-cli --cluster check 127.0.0.1:7001
将7007节点加入集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作,所以要进行分片。重新分片基本上意味着将哈希槽从一组节点移动到另一组节点,并且像群集创建一样
重新分片移动的插槽数量
接收节点的ID
从哪些节点获取这些密钥,键入all以从所有其他主节点获取哈希槽
redis-cli --cluster check 127.0.0.1:7001 redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id 6124a3bb3f26f85ddad86b50fed9e57d5088d048 ##把7008 节点加入到7001 节点的集群中,并且当做node_id为 6124a3bb3f26f85ddad86b50fed9e57d5088d048 的从节点。 ##如果不指定 --cluster-master-id 会随机分配到任意一个主节点。 redis-cli --cluster check 127.0.0.1:7001
如果不指定 --cluster-master-id 会随机分配到任意一个主节点。检查集群,此时7007有一个从节点



