NoSQL之Redis集群(缓存加速)

redis工作模式:

单节点;

集群的方式:

主从模式(2.8之前)

解决的数据备份,读写分离,无法实现自动化故障转移;

无法对master扩容;

哨兵模式(2.8之后)

利用哨兵检测master的状态;

自动的故障转移;

无法对master扩容;

集群模式(3.0之后)

redis cluster

分片:

客户端

代理设备

服务器端

master只有一个slave

master故障-->slave

(ping-pong)

master有多个slave

选举,选出新的主;

slave广播(故障切换的认证请求),拉选票,让master投票;

master(故障转移的认证应答),投票给slave;

如果a-slave票数多,a成了master;

如果票数一样多,再选;

期望,半数以上;

对于集群服务器的数量建议为奇数台;

主从架构的优缺点

哨兵模式的优缺点

集群模式的优缺点

redis集群至少有三个master,而单个master至少对应一个slave;

将软件包拉到各个服务器中;开启同步会话;

解压:

cd到解压目录;开始编译;

编译后安装;指定安装目录;

命令优化;

安装redis;

然后搭建集群环境;

修改配置文件;

修改监听地址;

修改redis保持持久化的工作模式;

开启集群模式及其集群模式的配置文件;和超时时间;

将以下语句yes改成no;

插槽覆盖功能;

改到这里就修改完毕了,保存退出,重启一下redis;

然后取消同步会话功能;创建集群;

因为redis的特殊之处就在于去中心化的特性;

如果检查无误,就输入yes继续;

成功的提示页面;

此时就可以登录任意一个节点查看cluster的状态信息;

对于redis集群而言,任意一个节点的IP都可以作为登录的入口;

如何登录集群呢?

此时会发现,创建键值对,哈希运算后生成槽放置到集群的节点上;

这就是分布式存储;且查看提示符,会发现,会切换到其他主机上;

而查看的也是主机192.168.10.103的信息;

如何动态的扩缩容?

这里采用脚本的方式快速部署;

随意找一个节点进行添加;

但是此节点,写入的话不会分配给该节点;因为该节点没有槽;

第二种添加的语句;

要指定集群的任意一个节点的IP及端口;

但是这种添加的方法也没有槽位;

默认添加进来的新的节点都会以master的身份,添加进去;

如果想让添加的节点成为现有节点的slave;如何实现?

先加入到集群中,然后以新节点的IP登录到集群中,指定要作为哪个节点的从;

这时要指定master的ID;

此时,108就成为了107的slave;

重新分配槽位;

然后再登录进去,查看节点信息;

如何删除节点;即缩容;
先指定集群中的任意一个IP地址,再指定删除哪一个节点的ID;
会从集群中忘记该节点;FORGET

还会把该节点关闭掉;

删除一个从节点的时候,可以直接删掉,因为该节点没有分配槽位,但是删除一个主节点的话,会提示该节点不会空,即有槽位;

首先要把该节点数据库清空,然后重置一下该节点,再去移除该节点;

再把该节点删除掉;

但是删除了master节点,以往分配给该节点的槽位还存在,所以要重新分配一下槽位,给其他节点;

可以看出,会提醒无法重置槽位;

删除master节点会影响到集群的架构;

此时要同步集群的会话,清空数据库,然后重置;

重新创建集群;

但是针对该问题,有另外的解决方案,就是移动槽位,随即也会把数据移动走,再删除该节点就没影响了;

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值