redis 高可用架构中包含了redis主从、redis哨兵、redis集群等模式。本章主要讲解redis的主从模式。
主从模式架构
图1.1 主从模式架构
主从模式:
采用一台Redis实例作为主机,其余的作为备份机。主机和备份机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取。主从模式很好的解决了数据备份问题,且与主从服务数据是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。
主节点宕机:
slave从节点不会竞选成为master。因为每个客户端连接redis实例的时候都是指定了ip和端口号的,如果所连接的redis实例因为故障下线了,而主从模式也没有提供一定的手段通知客户端另外可连接的客户端地址,因而需要手动更改客户端配置重新连接。
主从模式配置
准备三台服务器
主:172.18.188.1
从1:172.18.188.2
从2:172.18.188.3
1)修改主节点的redis的redis.conf配置
bind 0:0:0:0 任意ip都可以连接
protected-mode :No 关闭保护,其他ip可以连接
2) 修改从1节点的配置,配置如下:
slaveof 172.18.188.1 6379 -- 主节点的ip和端口
masterauth 123456 -- 主节点验证的密码
replica-read-only yes -- 从机开启只读模式
从2的配置与从1配置一致。
3) 配置完成,检测主从的配置信息
登录redis-cli端,执行info replication命令,结果显示如下说明配置正常
主从模式优缺点
1.一个Master可以同步多个Slaves。
2.Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力.
3.Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
4.Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
5.Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。
6.支持主从复制,主机会自动将数据同步到从机,可以进行读写分离,提高系统的伸缩性.
缺点:
1.Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
2.主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
3.Redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,
这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和,
主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
4.Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。